配列の中にある要素についてそれぞれ処理をする場合は次のようにforステートメントを使うのが一般的である。
次の例は配列の要素をそれぞれ括弧で挟み繋げる。
arrs=new Array("q","w","e","r");
ret="";
for(i=0;i<arrs.length;i++){
ret+="("+arrs[i]+")";
}
document.write(ret);
ret="";
for(i=0;i<arrs.length;i++){
ret+="("+arrs[i]+")";
}
document.write(ret);
結果
(q)(w)(e)(r)
また、次のようにfor…inステートメントを使う方法もある。
arrs=new Array("q","w","e","r");
ret="";
for(i in arrs){
ret+="("+arrs[i]+")";
}
document.write(ret);
ret="";
for(i in arrs){
ret+="("+arrs[i]+")";
}
document.write(ret);
配列は、「配列変数[キー]=要素」となっている。
上の例では
arrs[0]="q";
arrs[1]="w";
arrs[2]="e";
arrs[3]="r";
arrs[1]="w";
arrs[2]="e";
arrs[3]="r";
である。
したがって、キーが0から3までの場合の処理をすればよい。
これをforステートメントで書くと
for(i=0;i<arrs.length;i++)
となる。キーをiという変数に代入し、0から始めて、配列の数(この場合は4)未満まで処理をすればよい。
一方、配列のキーをすべて取り出し、それぞれに処理するというのがfor…inである。
for(i in arrs)
配列変数arrsのキーをiに代入し処理。終われば次のキーをiに代入。これをなくなるまで繰り返す。
結果は同じであるが、for…inを使う利点がある。
キーが数値でない場合である。
Javarrscriptでは連想配列を使うことができる。
例えば
arrs["mon"]="q";
arrs["tue"]="w";
arrs["wed"]="e";
arrs["thu"]="r";
arrs["tue"]="w";
arrs["wed"]="e";
arrs["thu"]="r";
のようにキーとして数値ではなく文字を使える。
arrs=new Array();
arrs["mon"]="q";
arrs["tue"]="w";
arrs["wed"]="e";
arrs["thu"]="r";
ret="";
for(k in arrs){
ret+="("+arrs[k]+")";
}
document.write(ret);
arrs["mon"]="q";
arrs["tue"]="w";
arrs["wed"]="e";
arrs["thu"]="r";
ret="";
for(k in arrs){
ret+="("+arrs[k]+")";
}
document.write(ret);
結果
(q)(w)(e)(r)
これはforではうまくいかない。
PHPにはforeachという構文がある。
foreach($arrs as $value)
JavaScriptのfor…inと似ているが、PHPのforeachは、キーをまったく気にしなくてよい。
なお次のようにキーを使うこともできる。
foreach($arrs as $key => $value)
コメント