JavaScript - map() を使った配列のループ
JavaScript では for 文を使った配列のループ方法以外にも、 map()、forEach()、filter() などのメソッドを使ったループ方法もあります。
ここでは、map() メソッドを使った配列のループについて説明します。
map() メソッドの概要
map() メソッドは、配列を巡回しながら、要素ごとに指定された関数を呼び出します。
そして、関数の戻り値からなる新しい配列を生成します。map() メソッドの引数として指定された関数は、3つの引数(値、配列のインデックス、配列自身)を持ちます。
つまり、次のような書き方となります。
新たな配列 = 元の配列.map(function(value, index, array){
// 処理
return 戻り値;
});
map() の場合は、forEach() と違って、return 文が必要となります。
return 文で戻した値からなる、新しい配列が生成されます。
「配列要素の値」だけ必要な場合は、次のように引数を省略できます。
新たな配列 = 元の配列.map(function(value){
// 処理
return 戻り値;
});
map() のサンプルコード
配列の各要素を自乗した配列を生成
次のコードは、配列(arr)の各要素を自乗した新しい配列(new_arr)を生成します。
var arr = [1, 2, 3, 4, 5];
var new_arr = [];
new_arr = arr.map(function(x){return x * x;});
console.log((arr)); // Array [ 1, 2, 3, 4, 5 ]
console.log((new_arr)); // Array [ 1, 4, 9, 16, 25 ]
疎な配列に対して map() を実行した場合は?
次のコードは、疎な配列(要素が0から順に埋まっていない配列)に対して、 map() メソッドを実行したケースです。
新しく生成される配列も疎な配列となっています。
var arr = [1, 2,, 4, 5]; // 疎な配列
var new_arr = [];
new_arr = arr.map(function(x){return x * 2});
console.log((arr)); // Array [ 1, 2, <1 個の空行>, 4, 5 ]
console.log((new_arr)); // Array [ 2, 4, <1 個の空行>, 8, 10 ]
まとめ
★ map() メソッドは、配列を巡回しながら、要素ごとに指定された関数を呼び出します。
そして、関数の戻り値からなる新しい配列を生成します。
★ 指定された関数には値、インデックス、配列自身の3つの引数があります。