Articles

JavaScriptオブジェクトを反復処理する–5つのテクニックとパフォーマンステスト。

for…in ループ

for…in loop文は、オブジェクトのすべての非シンボル、列挙可能なプロパティを反復処理するために使用することができます。

オブジェクト。keys

Object.keys()メソッドは、オブジェクトキーの配列を返します。 これにより、オブジェクトのプロパティを含む配列が作成されます。 その後、配列をループして、必要なキーと値を取得できます。

オブジェクト。values

Object.values()メソッドは、オブジェクト値の配列を返します。 これにより、オブジェクトのプロパティを含む配列が作成されます。 その後、配列をループして必要な値を取得できます。

オブジェクト。getOwnPropertyNames

Object.getOwnPropertyNames()メソッドは、指定されたオブジェクトで直接見つかったすべてのプロパティ(Symbolを使用するプロパティを除く列挙できないプロパテ これにより、オブジェクトのプロパティを含む配列が作成されます。 その後、配列をループして、必要なキーと値を取得できます。

オブジェクト。エントリ

Object.entries()ペア。

パフォーマンス比較

これらのテクニックをすべてテストし、速度とパフォーマンスに基づいてそれぞれを比較して、どちらが速いかを判断しましょう。ChromeやFirefoxのようなほとんどのブラウザは、performance.now()performance.now()DOMHighResTimeStampを返します。

使用法

let start = performance.now();// code to be timed...let duration = performance.now() - start;

テストを始めましょう…

テスト結果

私たちのテストによると、結果は昇順です。

let start = performance.now();// code to be timed...let duration = performance.now() - start;

テストを始めましょう…

テスト結果

私たちのテストによると、結果は昇順です。

したがって、これらの結果によると、javascriptオブジェクトを反復処理する最速の方法は次のとおりです。for…in ループ さて、これは他のメソッドが無効または役に立たないことを意味するものではなく、すべてのユースケースに依存します。p>

for...inループの問題は、プロトタイプチェーン内のプロパティを反復処理することです。 オブジェクトのプロパティを反復処理します。 Javascript配列は、配列として扱うのに役立つ便利なプロパティを持つ特定の種類のオブジェクトですが、それでも内部オブジェクトプロパティがあり、こ for...infor...inhasOwnPropertyで行うことができます。ES6でオブジェクトをループするより効率的な方法は、最初にオブジェクトを配列に変換することです。Object.keys()Object.values()Object.getOwnPropertyNamesObject.entries()。 次に、配列をループしてキーと値を取得します。