Array.forEach
またはtry...catch
などのハッキーな方法を使用すると、コードが理解しにくくなるだけです。この問題の解決策は 2 つだけです。Array.every
Array.some
1) 古いfor
ループを使用します。これは最も互換性のあるソリューションですが、コードの大きなブロックで頻繁に使用すると非常に読みにくくなる可能性があります。
var testArray = ['a', 'b', 'c'];
for (var key = 0; key < testArray.length; key++) {
var value = testArray[key];
console.log(key); // This is the key;
console.log(value); // This is the value;
}
2) 互換性が問題ない場合は、新しい ECMA6 (2015 仕様) を使用します。2016 年になっても、この新しい仕様を適切にサポートしているブラウザーと IDE はごくわずかです。Object.entries
これは反復可能なオブジェクト (配列など) では機能しますが、反復不可能なオブジェクトでこれを使用する場合は、メソッドを使用する必要があります。このメソッドは 2016 年 6 月 18 日の時点でほとんど利用できず、Chrome でさえそれを有効にするには特別なフラグが必要です: chrome://flags/#enable-javascript-harmony
. 配列の場合、これらすべては必要ありませんが、互換性の問題は残ります。
var testArray = ['a', 'b', 'c'];
for (let [key, value] of testArray.entries()) {
console.log(key); // This is the key;
console.log(value); // This is the value;
}
3) 多くの人は、最初の選択肢も 2 番目の選択肢も適切な候補ではないことに同意するでしょう。オプション 2 が新しい標準になるまでは、AngularJS や jQuery などの最も一般的なライブラリは、JavaScript で利用できるものよりも優れた独自のループ メソッドを提供します。また、これらの大きなライブラリをまだ使用しておらず、軽量のオプションを探している人のために、このようなソリューションを使用でき、古いブラウザーとの互換性を維持しながら ECMA6 とほぼ同等になります。