ご無沙汰しております、プログラミング初心者オジサンです。
配列を使ったコードを全然書いていなかったので、forEachメソッドが苦手です。コールバック関数もよく分かっていません。
そこで今回はforEachメソッドの動きを体感するため、コールバック関数を使ってforEachメソッドと同じように動くコードを書いてみました。
1.forEachメソッドの場合
// 配列
const stations = ['新宿', '代々木', '原宿', '渋谷'];
// forEachメソッド
// 第1引数は配列の要素、第2引数はインデックス
stations.forEach((station, index) => {
console.log('forEachメソッド index:', index, '駅名:', station);
});
このコードは、「新宿、代々木、原宿、渋谷」の4駅を入れたstaitonsという配列を、インデックス順に駅名を並べるものになります。
実行すると、
forEachメソッド index: 0 駅名: 新宿
forEachメソッド index: 1 駅名: 代々木
forEachメソッド index: 2 駅名: 原宿
forEachメソッド index: 3 駅名: 渋谷
とコンソールに表示されます。
2.関数で同じように動かす場合
// forEachメソッドの動きを関数でやる場合
// 関数名はforEachとし、第1引数は配列、第2引数はコールバック関数
const forEach = (array, cb) => {
for (let i = 0; i < array.length; i++) { // 配列の長さだけコールバック関数を繰り返す
cb(array[i], i); // 引数の順番もforEachメソッド風に
}
};
// forEach関数の第1引数にstations配列を入れ、第2引数のコールバック関数の第1引数に駅、第2引数にインデックスを入れる
console.log(forEach(stations, (station, index) => {
console.log('forEachの動きを関数でやる場合 index:', index, '駅名', station);
}));
このコードを実行すると、
forEachの動きを関数でやる場合 index: 0 駅名: 新宿
forEachの動きを関数でやる場合 index: 1 駅名: 代々木
forEachの動きを関数でやる場合 index: 2 駅名: 原宿
forEachの動きを関数でやる場合 index: 3 駅名: 渋谷
とコンソールに表示され、forEach関数と同じ動きをしてくれます。
最後に
forEachメソッドと同じく、mapメソッドもよく理解できていません。
使いどころがイメージできず、自分で考えたコードを書いたことがないためです。
イメージできたらサンプルコードを書いてみたいと思います。