JavaScript

【JavaScript】連想配列のkeyとvalueの取得

More than 3 years have passed since last update.

こんにちは。

僕は以前PHPをかじっていたのですが、JavaScriptだと
連想配列の扱い方が結構異なる感触があり、なかなか手ごわいです。

最初のミス:

var customers = { "田中太郎":"03-53xx-xxxx", "田中二郎":"03-54xx-xxxx", "田中花子":"03-55xx-xxxx" };
var names = new Array() ;

names[0] = "田中太郎" ;
names[1] = "田中二郎" ;
names[2] = "田中花子" ;

for(var i = 0 ; i<names.length ; i++ ){
    for(var j in customers){
      alert( names[i]  + "さんの番号は" + customers[j] + "です。") ;
    }
}

田中さんがたくさん出てきました。
事故です。

ループの中でさらにループを持たせてたらそうですよね。

調べてみるとどうやらkeyで持ってこれるらしい。
次はこうやってみた。

for(key j in customers){
  alert( key  + "さんの番号は" + customers[j] + "です。") ;
}

非常に残念な結果でした。

どうやら

for in文はループをまわす回数を定義しなくていい。

というところまでこぎつけて、ようやく解決。

var customers = { "田中太郎":"03-53xx-xxxx", "田中二郎":"03-54xx-xxxx", "田中花子":"03-55xx-xxxx" };

for(key in customers){
  alert(key + "さんの番号は、" + customers[key] + "です。") ;
}

for文とかなりおごっちゃになっていたようで、
連想配列なので、key と value を結びつけてあげればよかったんですね。
ここはほかの言語も同じですよね。

(そもそも配列につっこむ必要もなかった。)

ちょっとみたことなかったfor ~ in 文には見慣れなければいけないかつ
反復しなきゃいけない模様です。

少しずつですが、ぐぐる力もでてきたかも。
それではこれからもよろしくお願いいたします。