連想配列に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の違いがイマイチつかない。
ついでにはなるが、
をみて書いたのでが、forEach文をアロー関数になおそうとするとエラーになった。
var IDs = { "name1":"hoge1", "name2":"hoge2", "name3":"hoge3", "name4":"hoge4", }; Object.keys(IDs).forEach(value => { console.log(this[value]) },IDs);
という書き方だとエラーが出る。 アロー関数内のスコープは基本外側に向けて開かれているため、という理解。 この場合thisが何のオブジェクトなのか定義されていないため、みたい。 ちょっとした違いだけど心に留めておく。