この記事では、forEach の Javascript 配列ループの詳細な説明を主に紹介します。必要に応じて、さらに学習することができます。
1.js 配列ループトラバーサル。
配列ループ変数というと、最初に思い浮かぶのは for(var i=0;i
さらに、より単純な forEach メソッド
2.forEach 関数を使用することもできます。
FirefoxとChromeのArray型にはforEach関数があります。以下を使用してください:
<!--Add by oscar999--> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Author" CONTENT="oscar999"> </HEAD> <BODY> <script> var arryAll = []; arryAll.push(1); arryAll.push(2); arryAll.push(3); arryAll.push(4); //匿名方式 arryAll.forEach(function(e){ alert(e); }) function t1(arg){alert(arg);} //非匿名方式 arryAll.forEach(t1,arryAll); </script> </BODY> </HTML>
しかし、上記のコードは IE では正しく動作しません。
IEのArrayにはこのメソッドがないからです
alert(Array.prototype.forEach);
上記の文を実行すると「未定義」と表示されますが、これはIEのArrayにはforEachメソッドがないことを意味します。
3. IE を forEach メソッドと互換性のあるものにする
IE の Array には forEach メソッドがないため、このプロトタイプ メソッドを手動で追加します。
//Array.forEach implementation for IE support.. //https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach if (!Array.prototype.forEach) { Array.prototype.forEach = function(callback, thisArg) { var T, k; if (this == null) { throw new TypeError(" this is null or not defined"); } var O = Object(this); var len = O.length >>> 0; // Hack to convert O.length to a UInt32 if ({}.toString.call(callback) != "[object Function]") { throw new TypeError(callback + " is not a function"); } if (thisArg) { T = thisArg; } k = 0; while (k < len) { var kValue; if (k in O) { kValue = O[k]; callback.call(T, kValue, k, O); } k++; } }; }
詳しい導入については、以下を参照してください:
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach
4.ループ?
Js この状況では、forEach は continue、break を使用できません:
1. if ステートメント制御
2. return ステートメント制御 (return true または return false)
N 実際、Return の役割は Continue と似ています
次の例は、配列内の 2 の倍数と 3 の 3 倍の数です。現時点では、同様の効果を記述するこれより良い方法はありません。壊れる。
個人的な意見: Java 構文でも C# 構文でも、forEach はすべての値を走査することです
以下のテストコードは私が追加したものです。
<!--Add by oscar999--> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Author" CONTENT="oscar999"> </HEAD> <BODY> <script> if (!Array.prototype.forEach) { Array.prototype.forEach = function(callback, thisArg) { var T, k; if (this == null) { throw new TypeError(" this is null or not defined"); } var O = Object(this); var len = O.length >>> 0; // Hack to convert O.length to a UInt32 if ({}.toString.call(callback) != "[object Function]") { throw new TypeError(callback + " is not a function"); } if (thisArg) { T = thisArg; } k = 0; while (k < len) { var kValue; if (k in O) { kValue = O[k]; callback.call(T, kValue, k, O); } k++; } }; } var arryAll = []; arryAll.push(1); arryAll.push(2); arryAll.push(3); arryAll.push(4); arryAll.push(5); arryAll.push(6); arryAll.push(7); var arrySpecial = []; arryAll.forEach(function(e){ if(e%2==0) { arrySpecial.push(e); }else if(e%3==0) { arrySpecial.push(e); } }) </script> </BODY> </HTML>
以上、皆様のお役に立てれば幸いです。
関連記事:
js
DOMインスタンスの走査の詳細な説明
jsのプロパティを横断するためオブジェクト
以上がJavascript配列ループトラバーサル(forEachの詳細説明)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。