Yado_tech

旅館+ITとはなんぞ

連想配列にforループを適用する

連想配列を色々とまとめて処理したい。

①for ~in ループを使う

これが一番簡単でわかりやすい。メインで使う

var IDs = {
  "name1":"hoge1",
  "name2":"hoge2",
  "name3":"hoge3",
  "name4":"hoge4",
};

for(var key in IDs){
  console.log(IDs[key]);
}

②forEachを使う

Object.keys(array)を使うと連想配列のキーのみ配列として取り出せることを利用する

var IDs = {
  "name1":"hoge1",
  "name2":"hoge2",
  "name3":"hoge3",
  "name4":"hoge4",
};

Object.keys(IDs).forEach(value => {
  console.log(IDs[value])
},IDs);

ちょっと無理やり感がある。

③mapを使う

mapを使うと配列の処理がいらなくなるみたい

var IDs = {
  "name1":"hoge1",
  "name2":"hoge2",
  "name3":"hoge3",
  "name4":"hoge4",
};

Object.keys(IDs).map(value => console.log(IDs[value]));

これだとmapとforEachの違いがイマイチつかない。

ついでにはなるが、

www.sejuku.net

をみて書いたのでが、forEach文をアロー関数になおそうとするとエラーになった。

var IDs = {
  "name1":"hoge1",
  "name2":"hoge2",
  "name3":"hoge3",
  "name4":"hoge4",
};

Object.keys(IDs).forEach(value => {
  console.log(this[value])
},IDs);

という書き方だとエラーが出る。 アロー関数内のスコープは基本外側に向けて開かれているため、という理解。 この場合thisが何のオブジェクトなのか定義されていないため、みたい。 ちょっとした違いだけど心に留めておく。

qiita.com