JavaScript forEachの解説

このページのforEachがわからないから説明してほしいと質問された。 【JavaScript入門】連想配列(Dictionary)の取得/追加/ソートまとめ | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト

さらに、第2引数へ連想配列を指定していることから、ループ処理内の「this」が連想配列「arr」と同じになります。そのため、「this[value]」と記述することで連想配列の「値」を取得できるというわけですね。」

質問

上記の文の、「第2引数へ連想配列を指定している」というのが、この文の上にある配列の式のどの部分に当たるのかイマイチわかりません。

var arr = { apple: "400yen", banana: "300yen", cake: "600yen" };
 
Object.keys(arr).forEach( function(value) {
 
    console.log( value + ':' + this[value] );
 
}, arr)

ここでObject.keys(arr)は連想配列のkeyで新しい配列を作る。

その内容は、この様になる。 f:id:happy_teeth_ago:20200329204456p:plain

ただのkeyだけの配列になってしまった。 ここからだけど、

逆に質問 forEachメソッドの引数はいくつあるか?

答えは2つである。

第2引数に arrを渡している。

ここが ポイント

//console.log(value)は当然、いまのキーだけの配列の値。

//this[value]はもとの連想配列 arrのvalueが取得できる。

  console.log( value + ':' + this[value] );

以上。 めでたし、めでたし