foreach
クロスブラウザのメソッド/関数を書き込もうとしています。配列またはオブジェクトの値またはプロパティの実際のコピーまたはコピーを使用して反復処理を行うことができるはずです (PHP のようにforeach ($array as &$item)
)。
forEach も map メソッドもブラウザ間の互換性がないため、for ループが必要になります。
このトピックJavaScript for...in vs forは、配列をループするために使用しないように警告しましたfor... in
が、次のコードでテストすると:
var arr = [];
arr[3] = "foo";
arr[0] = "bar";
arr["baz"] = "baz";
for (var i in arr) {
alert(i);
}
結果 3、0、および baz が得られます (これは正しいです)。これは、インデックス付き配列 (0、1、2) でも機能するようです。それでもObject.prototype.toString.call(arr) === "[object Array]"
true を返します。
では、配列値とオブジェクト プロパティの両方を反復処理し、理想的には配列/オブジェクトの実際の値/プロパティを操作するオプションを提供する foreach メソッドを作成するための最良のクロス ブラウザー アプローチは何ですか?