JS で一般的に使用される配列トラバーサル メソッドの例の比較

php中世界最好的语言
リリース: 2018-05-25 13:57:32
オリジナル
994 人が閲覧しました

今回はよく使われるJS配列トラバーサルメソッドの例の比較をお届けします よく使われるJS配列トラバーサルメソッドの注意点は何ですか?

はじめに

この記事は、いくつかの JS 変数交換メソッドとパフォーマンス分析の比較に関する前の記事と同じシリーズに属しており、引き続き JS で一般的に使用されるいくつかの配列トラバーサル メソッドとそれぞれのパフォーマンスの比較を分析します。

Start by 前回、いくつかの一般的な JS 変数交換メソッドとそれぞれのパフォーマンスを分析した結果、このメソッドは非常に優れていると感じたので、コアロジックを抽出してテンプレートにカプセル化し、拡張することを計画しましたこの記事はシリーズの 2 番目であり、JS 配列トラバーサルのいくつかのメソッドの分析と比較です

JS 配列トラバーサル、基本的には、for、forin、foreach、forof、マップなどのメソッド。ここでは、この記事の分析とパフォーマンス分析と比較で使用されるいくつかの配列トラバーサルメソッドを示します最初のメソッド: 通常の for ループ

コードは次のとおりです:

for(j = 0; j < arr.length; j++) {
}
ログイン後にコピー

簡単な説明:最も単純なもので、使用頻度も高くなります。 最も高いものは、パフォーマンスは悪くありませんが、まだ最適化の余地があります

2 番目のタイプ: for ループの最適化されたバージョン

コードは次のとおりです:

for(j = 0,len=arr.length; j < len; j++) {
}
ログイン後にコピー

簡単な説明: 一時変数を使用して長さをキャッシュし、取得の繰り返しを回避します。 配列の長さ。配列が大きいほど最適化の効果がより顕著になります。 このメソッドは、基本的にすべてのループトラバーサルメソッドの中で最もパフォーマンスが高いメソッドです

3番目のタイプ: forループの弱体化バージョン

コードは次のとおりです:

for(j = 0; arr[j]!=null; j++) {
}
ログイン後にコピー

簡単な説明: このメソッドは、実際には厳密にはfor ループは長さの判定を使用せず、変数自体を使用して判定します。実際、このメソッドのパフォーマンスは通常の for ループよりもはるかに小さくなります。コードは次のとおりです。

arr.forEach(function(e){
});
ログイン後にコピー
簡単な説明: 配列に付属する foreach ループは、通常の for ループよりも頻繁に使用されます

5 番目のタイプ: foreach のバリアント

コードは次のとおりです。
Array.prototype.forEach.call(arr,function(el){
});
ログイン後にコピー

簡単な説明: foreach は配列型であるため、この型以外の一部 (NodeList など) では、直接使用できないため、このバリアントを作成することで、同様の配列に foreach 関数を持たせることができます。

実際のパフォーマンスは通常の foreach よりも劣ります

6 番目のタイプ: forin ループ

コードは次のとおりです:

for(j in arr) {
}
ログイン後にコピー

簡単な説明: 多くの人がこのループを使用することを好みますが、実際には、分析とテストの結果、多くのループトラバーサルの中で メソッドの中でその効率は最も低いです

7 番目のメソッド: マップトラバーサル

コードは次のとおりです:

arr.map(function(n){
});
ログイン後にコピー

簡単な説明: このメソッドも広く使用されていますが、よりエレガントです。使用すると、実際の効率は foreach ほど良くありません

8 番目のタイプ: forof traversal (ES6 のサポートが必要)

コードは次のとおりです:

for(let value of arr) {
});
ログイン後にコピー

簡単な説明: このメソッドは es6 で使用されます。 forin よりは優れていますが、それでもないよりは優れています。 通常の for ループでのさまざまなトラバースメソッドのパフォーマンス比較

基本的に、上記のメソッドを 1 つずつ比較分析しました。描画されるのは次のとおりです:

普通の for ループだけが最もエレガントです

(PS: 上記のコードはすべて単なる空のループであり、内部実行コードのリサイクルはなく、それぞれの時間の分析のみです)ループ)

パフォーマンス比較のスクリーンショット

分析結果 1以下のスクリーンショットのデータは、Chrome (es6 をサポート) で 100 回実行した後に得られた結論です (毎回 10 回実行、合計10 サイクルの分析結果が得られます)

forin ループが最も遅いことがわかります。最適化された通常の for ループが最速です

分析結果 2

以下のスクリーンショットデータは、chrome (es6 対応) で 1000 回実行した後に得られた結論です (各回 100 回、合計 10 回のループ、得られた分析結果) )

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨読書

JSを使用して複数の配列を結合して再計算する方法

antdドロップダウンボックス連携を使用する手順の詳細な説明

以上がJS で一般的に使用される配列トラバーサル メソッドの例の比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!