備忘用にJavaScriptでの配列のループ(繰り返し)方法について簡単にまとめました。
オブジェクトのループ方法は下記のリンクにまとめています。
目次
for文
for
配列の数(length)だけループさせる。
const animal = ['イヌ', 'サル', 'キジ'];
for (let i = 0; i < animal.length; i++) {
console.log(animal[i]);
}
実行結果
// 'イヌ'
// 'サル'
// 'キジ'
インデックスが3になったときに止める場合は次のように「break」を書く。
const animal = ['イヌ', 'サル', 'キジ', 'ウサギ'];
for (let i = 0; i < animal.length; i++) {
if (i === 3) break;
console.log(animal[i]);
}
実行結果
// 'イヌ'
// 'サル'
// 'キジ'
インデックスが3になったときにスキップする場合は次のように「continue」を書く。
const animal = ['イヌ', 'サル', 'キジ', 'ウサギ'];
for (let i = 0; i < animal.length; i++) {
if (i === 3) continue;
console.log(animal[i]);
}
実行結果
// 'イヌ'
// 'サル'
// 'キジ'
breakと同じ結果ですが、処理内容が異なります。
breakとcontinueの違い
break:if文から抜ける
continue:if文を抜けずにスキップして次の処理に進む
for…in
配列のインデックスを取得できる。
インデックスの番号順に取得できる保証はないので注意(ECMAScriptの規定でそうなっている)。
const animal = ['イヌ', 'サル', 'キジ'];
for(let i in animal) {
console.log(animal[i]);
}
実行結果
// 'イヌ'
// 'サル'
// 'キジ'
for…of
IEに非対応で、Edgeには対応。
const animal = ['イヌ', 'サル', 'キジ'];
for( let name of animal ){
console.log(name);
}
実行結果
// 'イヌ'
// 'サル'
// 'キジ'
entries() メソッドを使用するとインデックスも同時に取得できる。
const animal = ['イヌ', 'サル', 'キジ'];
for( let [index, name] of animal.entries() ){
console.log(index, name);
}
実行結果
// 0 'イヌ'
// 1 'サル'
// 2 'キジ'
.forEach()
第一引数(str)で要素を取得し、第二引数でインデックスを取得する。
例1)単純な配列
const animal = ['イヌ', 'サル', 'キジ'];
animal.forEach(function(str, i) {
console.log(str, i);
});
実行結果
// 'イヌ'
// 'サル'
// 'キジ'
例2)配列内にオブジェクト
const animal = [
{ name:'イヌ', age: 4},
{ name:'サル', age: 3},
{ name:'キジ', age: 6},
];
animal.forEach(function(obj, i) {
console.log(obj.name, obj.age);
});
実行結果
// 'イヌ' 4
// 'サル' 3
// 'キジ' 6
.forEach()で処理をスキップする場合は「continue」ではなく「return」を使用。
const animal = ['イヌ', 'サル', 'キジ'];
animal.forEach(function(str, i) {
if (i === 3) continue;
console.log(animal[i]);
});
実行結果
// 'イヌ'
// 'サル'
// 'キジ'
breakは使用できない
先述したfor文のループで使用したif文の「break」は使えません。
.forEach()のループからは抜けることはできないので注意が必要。