駆け出しのエンジニア日記

プログラミング言語勉強中の奮闘日記

for...ofループ

ループ処理の中でfor...ofというものがあります。

for...of・・・配列の要素を順番に処理することができます。(列挙可能なオブジェクトに使える)

Internet Explorerでは使えないのでご注意ください。

構文は下記のようになります。

 for (変数 of 列挙可能なオブジェクト) {
  // 処理の内容
 }

ではサンプルを書いてみます。

下記の配列を順番に並べるようにしてみます。

const subreddits = [
'cooking',
'books',
'chickens',
'life',
'pics',
'soccer',
'movies',
];

for...ofを使うと、

 for (let subreddit of subreddits) {
  console.log(subreddit);
 }
 出力結果
 // cooking
 // books
 // chickens
 // life
 // pics
 // soccer
 // movies

こうなります。

for文を使った場合

 for (let i = 0; i < subreddits.length; i++) {
  console.log(subreddits[i]);
 }

比べてみると、記述量も減り、見やすくなっているのがわかると思います。

「列挙可能なオブジェクト」についても簡単に説明します。

列挙可能なオブジェクト・・・順番に処理する能力を持っているオブジェクトみたいな捉え方で大丈夫です。

配列はもちろんこれに含むのですが、これ以外にもStringが当てはまります。

サンプルとして書いてみます。

 for (let char of 'hello world') {
console.log(char);
 }

出力結果はこうなります。

これはStringが列挙可能なオブジェクトだからできるものになります。

基本的に構文の「列挙可能なオブジェクト」のところは配列で使うことが多いので、配列以外も入れれることができることは覚えておいてください。

 

for...in との違い・・・

for...in は指定された連想配列(オブジェクト)から要素を取り出して先頭から順番に処理します。

 for( 変数 in 連想配列オブジェクト)) {
  // 処理する内容
 }

サンプル書いてみます。

const crew = {
name: 'Luffy',
age: '19',
birthplace: 'EAST BLUE'
}

for(let c in crew){
console.log(c);
}
 出力結果
  //name
  //age
  //birthplace

あくまでも出力されるのはキーであり、バリューではないです。

バリューも出力したい場合は

for(let x in crew){
console.log(crew[x]);
}
 出力結果
// Luffy
// 19
// EAST BLUE

こうなります。

 

for...ofについて解説しました。