for of文は、反復可能オブジェクト(配列、文字列、Map、Set など)の要素に対して反復処理を行うための簡潔な構文である。
これらの例では、for of文を使用して異なる種類の反復可能オブジェクトを処理しています。for of を使えるのは、反復可能オブジェクトが Symbol.iterator メソッドを持っている場合である。
反復可能オブジェクトならfor of文が使用可能である。
反復可能オブジェクトがSymbol.iteratorを持っているとは限らない。
// 1 配列の要素に対する反復:
const arr = [1, 2, 3, 4, 5];
for (const element of arr) {
console.log(element);
}
// Symbol.iterator メソッドが存在するかどうかを確認
if (typeof arr[Symbol.iterator] === 'function') {
console.log('このオブジェクトは反復可能です。');
} else {
console.log('このオブジェクトは反復可能ではありません。');
}
// 2 文字列の文字に対する反復:
const str = "Hello";
for (const char of str) {
console.log(char);
}
// 3 Map のエントリに対する反復:
const myMap = new Map([
['key1', 'value1'],
['key2', 'value2'],
['key3', 'value3']
]);
for (const [key, value] of myMap) {
console.log(`Key: ${key}, Value: ${value}`);
}
for (const a of Array.from(myMap.values())) {
console.log('a = ', a);
}
// 4 Set の要素に対する反復:
const mySet = new Set([1, 2, 3, 4, 5]);
for (const element of mySet) {
console.log(element);
}
// 5 DOM コレクションに対する反復:
const paragraphs = document.querySelectorAll('p');
for (const paragraph of paragraphs) {
console.log(paragraph.textContent);
}