for...in
配列にループを使用することは間違っていませんが、なぜ誰かがあなたにそう言ったのかは推測できます:
1.)配列に対してその目的を持つより高次の関数またはメソッドが既に存在しますが、「forEach」と呼ばれるより多くの機能性とより簡潔な構文を持っています。 Array.prototype.forEach(function(element, index, array) {} );
2.)配列は、常に長さを持っていますが、for...in
とforEach
ある任意の値のための関数を実行していません'undefined'
だけで定義された値を持つインデックスに対して、。したがって、値を1つだけ割り当てる場合、これらのループは関数を1回だけ実行しますが、配列が列挙されるため、定義された値を持つ最高のインデックスまでの長さが常にありますが、これらの長さはこれらを使用すると気付かれない可能性がありますループ。
3.)標準のforループは、パラメーターで定義した回数だけ関数を実行します。配列には番号が付けられているため、関数を実行する回数を定義する方が理にかなっています。他のループとは異なり、forループは、値が定義されているかどうかに関係なく、配列内のすべてのインデックスに対して関数を実行できます。
本質的に、どのループでも使用できますが、ループの動作を正確に覚えておく必要があります。さまざまなループが繰り返される条件、それらの個別の機能を理解し、それらがさまざまなシナリオに多かれ少なかれ適切であることを理解します。
また、一般的にループforEach
よりもメソッドを使用する方が良い方法と考えられるかもしれません。for...in
書く方が簡単で機能も多いので、このメソッドと標準のみを使用する習慣を身につけたいと思うかもしれませんが、コール。
最初の2つのループはconsole.logステートメントを1回だけ実行しますが、標準のforループは指定された回数だけ関数を実行します(この場合は、array.length = 6)。
var arr = [];
arr[5] = 'F';
for (var index in arr) {
console.log(index);
console.log(arr[index]);
console.log(arr)
}
// 5
// 'F'
// => (6) [undefined x 5, 6]
arr.forEach(function(element, index, arr) {
console.log(index);
console.log(element);
console.log(arr);
});
// 5
// 'F'
// => Array (6) [undefined x 5, 6]
for (var index = 0; index < arr.length; index++) {
console.log(index);
console.log(arr[index]);
console.log(arr);
};
// 0
// undefined
// => Array (6) [undefined x 5, 6]
// 1
// undefined
// => Array (6) [undefined x 5, 6]
// 2
// undefined
// => Array (6) [undefined x 5, 6]
// 3
// undefined
// => Array (6) [undefined x 5, 6]
// 4
// undefined
// => Array (6) [undefined x 5, 6]
// 5
// 'F'
// => Array (6) [undefined x 5, 6]