0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

forEachメソッドを理解するため、関数で同じように動くコードを書いてみた

Last updated at Posted at 2019-06-18

ご無沙汰しております、プログラミング初心者オジサンです。

配列を使ったコードを全然書いていなかったので、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メソッドもよく理解できていません。
使いどころがイメージできず、自分で考えたコードを書いたことがないためです。
イメージできたらサンプルコードを書いてみたいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?