ループ処理を行うfor…inとfor…ofについて、それぞれ簡単に試してみます。
for…in
for…inはオブジェクトをループする際に使用します。
主要なブラウザで特に問題なくサポートされています。
for (variable in object) statement
objectにオブジェクトを指定してvariableでキーを受け取り、ループ中に実行する文のstatement内でvariableを使用できます。
variableで受け取れるのはキーのみで、バリューは含まれません。
const object = {
name: '黒川あかね',
height: 163,
cv: '石見舞菜香'
};
for(const property in object) {
console.log(property);
}
// name
// height
// cv
バリューを使用する場合、キーを使って取得します。
const object = {
name: '黒川あかね',
height: 163,
cv: '石見舞菜香'
};
for(const property in object) {
console.log(object[property]);
}
// 黒川あかね
// 163
// 石見舞菜香
for…of
for…inは配列やNodeListなど、反復可能オブジェクトをループする際に使用します。
IEで非対応ですが、それ以外の主要なブラウザで特に問題なくサポートされています。
for (variable of iterable) statement
iterableに反復可能オブジェクトを指定してvariableで値を受け取り、ループ中に実行する文のstatement内でvariableを使用できます。
const array = ['a', 'b', 'c'];
for (const element of array) {
console.log(element);
}
// a
// b
// c
NodeListに対しても使用可能です。
<ul> <li class="item">A</li> <li class="item">B</li> <li class="item">C</li> </ul>
const items = document.querySelectorAll('.item');
for (const element of items) {
console.log(element.textContent);
}
// A
// B
// C
argumentsオブジェクトなどにも使用できます。
function arr() {
for (const value of arguments) {
console.log(value);
}
}
arr(1, 2, 3);
// 1
// 2
// 3
for…of内ではbreakやcontinueを使用することもできます。
const array = ['a', 'b', 'c'];
for (const element of array) {
console.log(element);
if(element === 'b') break;
}
// a
// b
for (const element of array) {
if(element === 'b') continue;
console.log(element);
}
// a
// c
コメントが承認されるまで時間がかかります。