for/in文 ループ文

最終更新日:

このページではJavaScriptループ文の1つ、for/in文について説明します。

for/in文はオブジェクトのプロパティを巡回するときに使うと便利な制御文です。 同じforを使っても、for文とfor/in文は全く異なります。 通常、配列の要素の巡回はfor文を使い、オブジェクトのプロパティの巡回はfor/in文を使います。

書式

for (変数 in オブジェクト){
    実行文1;
    実行文2;
    実行文3;
}

実行文が1つしかない場合は中括弧{}が省略できます。

for (変数 in オブジェクト)
    実行文1;

オブジェクトのプロパティが変数に代入されます。 そしてプロパティの数だけループします。

使用例

下のプログラムでは3つのプロパティを持つオブジェクトobjに対して、 for/in文でプロパティと値を表示します。

var obj = {
    a: 10,
    b: 20,
    c: 30
};

for (var p in obj){
    console.log(p);
    console.log(obj[p]);
}

// 実行結果
a
10
b
20
c
30

配列のに対してfor/in文は使える?

通常は使用しませんが、配列の要素をfor/in文を使って巡回することも できます。なぜならJavaScriptでは、配列もオブジェクトの一種だからです。

var arr = [10,20,30];

for (var i in arr){
    console.log(i);
    console.log(arr[i]);
}

// 実行結果
0
10
1
20
2
30

オブジェクトのプロパティを配列に入れる

for/in文を使ってオブジェクトのプロパティを取り出し、 取り出したプロパティを配列に入れることもできます。

次のプログラムはオブジェクトobjのプロパティを 配列arrに代入し、最後に配列arrの値を表示します。

var obj = {
    a: 10,
    b: 20,
    c: 30
};

var arr = [];
var i = 0;

for (var p in obj){
    arr[i] = p;
    i++;
}

console.log(arr);    // Array [ "a", "b", "c" ]