LoginSignup
22
14

More than 5 years have passed since last update.

mapメソッドについての基礎

Posted at

まえがき

mapメソッドの基礎を実例を通してまとめます。

簡単な例


var numbers = [1,2,3,4]
numbers.map(
    function(){
        console.log("OK");
    }
)
// OKと4回出る

配列に.mapとつけて、中に関数を入れる。
4個入った配列なので、中の関数は4回実行されました。

アロー関数で書いてみよう

アロー関数で書いた方がきれいです。
アロー関数の解説→https://qiita.com/NNNiNiNNN/items/c19405345d8751ceb178

var numbers = [1,2,3,4]
numbers.map(()=>{
    console.log("OK");
    }
)
// OKと4回出る

ここからはアロー関数で説明していきます。

引数をつけてみよう

まず、引数を一つ付けてみます。

var numbers = ["","","",""]
numbers.map((value)=>{ // 引数を一つ付けます。
        console.log(value);// valueの中には・・・?
    }
)
// あ
// い
// う
// え

第一引数は配列の値を取得しています。
次に、二つ目の引数をつけます。

var numbers = ["","","",""]
numbers.map((value, index)=>{// 引数を二つ付けます。
        console.log(index);// indexの中には・・・?
    }
)
// 0
// 1
// 2
// 3

第二引数では、配列のインデックス番号を取得しています。
もう一つ付けます。

var numbers = ["","","",""]
numbers.map((value, index,array)=>{// 引数を三つ付けます。
        console.log(array);// arrayの中には・・・?
    }
)
// ["あ", "い", "う", "え"]
// ["あ", "い", "う", "え"]
// ["あ", "い", "う", "え"]
// ["あ", "い", "う", "え"]

配列そのものを取得しています。
これは例えば


var numbers = ["","","",""]
numbers.map((value, index,array)=>{
    array.push(value);// valueあいうえを順番にpush
    console.log(array);// pushされるごとに表示してみます。
    }
)
// ["あ", "い", "う", "え","あ"]
// ["あ", "い", "う", "え","あ", "い"]
// ["あ", "い", "う", "え","あ", "い", "う"]
// ["あ", "い", "う", "え","あ", "い", "う", "え"]

こんな感じで、対象の配列を操作することができます。

返り値を利用してみよう

mapの最大の特徴は返り値を利用できることです。
以下の例を見てみましょう。

var numbers = [1,2,3,4]
var double = numbers.map(value=>{
    return(value * 2); 
    }
)
console.log(double);// [2,4,6,8]

mapで得た値をそのままreturnすることで新しい配列を得ることができました。

まとめ

配列の要素に対して一つ一つ関数を実行できる。
引数として要素の値、番号、配列そのものを使うことができる。
返り値を出力できる。

以下はおまけ

オブジェクトを引数にしてみよう

mapの側に第二引数としてオブジェクトを用意してみます。

var move = {
      "name": "だいもんじ",
    "damage": 110,
    "accuracy": 85
  }// こんなオブジェクトを作ってみる
var properties = ["damage","accuracy"];// mapを使う配列はこっち
properties.map(function(value){ // アロー関数「ではない」ことに注意
    console.log(this[value])
}, move )// 第二引数にオブジェクトmoveを設定
// 110
// 85

thisで第二引数であるmapを参照できました。
thisの挙動の違いがあるため、アロー関数では同じ動きをしないので注意。

22
14
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
22
14