angularフレームワークに新しい。私は角度でjsonオブジェクトを繰り返したいとき、javascript foreach
とfor..in
ループを使用しました。
後で私はangular自体にオブジェクトを繰り返すangular.forEach
ループがあることを知った。
angular.forEach
のパフォーマンスとjavascript for..in
およびforeach
ループのパフォーマンスを比較するにはどうすればよいですか?
Javascript foreach
およびangular.forEach
の代わりにfor..in
を使用する必要があるのはなぜですか?
パフォーマンスを示すいくつかの例と使用理由を教えてください。
ありがとう:)
Angular forEach-オブジェクトまたは配列のいずれかであるobjコレクションの各アイテムに対してイテレータ関数を1回呼び出します。
var values = {name: 'misko', gender: 'male'};
angular.forEach(values, function(value, key) {
console.log(key + ': ' + value);
});
// Output:
// "name: misko"
// "gender: male"
for..in-オブジェクトのenumerable properties
を任意の順序で繰り返します。個別のプロパティごとに、ステートメントを実行できます。
var obj = {a:1, b:2, c:3};
for (var prop in obj) {
console.log("obj." + prop + " = " + obj[prop]);
}
// Output:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
forEach-メソッドは、提供された関数を配列要素ごとに1回実行します。
// Notice that index 2 is skipped since there is no item at
// that position in the array.
[2, 5, , 9].forEach(function (element, index, array) {
console.log('a[' + index + '] = ' + element);
});
// logs:
// a[0] = 2
// a[1] = 5
// a[3] = 9
パフォーマンスの観点からは、使用しているデータ構造に依存します。Array
の場合、Angular.forEach or native forEach
を使用することをお勧めします。Object
for..in
の場合、最善ですが、Angular.forEach
もオブジェクトをうまく処理しているようです。使用するデータの量に応じて。巨大な場合は、Lodash or Underscore
のようなライブラリを使用することをお勧めします。それらはデータ操作をうまく処理します。
angular.forEach
は基本的にポリフィルです。
したがって、angularを使用している場合、angularは必要に応じて代替を提供するため、ブラウザが古いかどうかは関係ありません。
コードでは、次のようになります。
if (!Array.prototype.forEach) {
Array.prototype.forEach = function(...) {
// angulars own implementation
}
}
他にもいくつかの違いがあります。