原文: JavaScript Map – How to Use the JS .map() Function (Array Method)
配列の要素に何かしらの処理を適用して、要素を変更した新しい配列を取得したい場合があります。
ループを使って繰り返し処理をわざわざ書く代わりに、標準で用意されている Array.map() メソッドを使うことができます。
Array.map() メソッドを使用すると、コールバック関数を使用して配列に反復処理を行い、その要素を変更できます。コールバック関数は、配列の各要素に対して実行されます。
例えば、以下のような要素を持った配列があります。
let arr = [3, 4, 5, 6];そして、配列の各要素に対して、3 を掛ける必要があるとします。for を使用して、以下のようなループ処理を行うことを考えるかもしれません。
let arr = [3, 4, 5, 6];
for (let i = 0; i < arr.length; i++){
arr[i] = arr[i] * 3;
}
console.log(arr); // [9, 12, 15, 18]しかし、実は Array.map() メソッドを使用して、同じ結果を取得できます。以下に例を記載します。
let arr = [3, 4, 5, 6];
let modifiedArr = arr.map(function(element){
return element *3;
});
console.log(modifiedArr); // [9, 12, 15, 18]Array.map() メソッドは、要素に対して変更を適用するためによく使用されます。上記コードのように、特定の数字を掛けることもできますし、自身のアプリに応じて必要な処理を行うこともできます。
オブジェクトの配列に対して map() メソッドを使用する方法
例えば、以下のように友達の firstName と lastName を値に持つオブジェクトの配列があるとします。
let users = [
{firstName : "Susan", lastName: "Steward"},
{firstName : "Daniel", lastName: "Longbottom"},
{firstName : "Jacob", lastName: "Black"}
];
以下のように、map() メソッドを使用して、配列をループし、firstName と lastName の値を結合できます。
let users = [
{firstName : "Susan", lastName: "Steward"},
{firstName : "Daniel", lastName: "Longbottom"},
{firstName : "Jacob", lastName: "Black"}
];
let userFullnames = users.map(function(element){
return `${element.firstName} ${element.lastName}`;
})
console.log(userFullnames);
// ["Susan Steward", "Daniel Longbottom", "Jacob Black"]map() メソッドでは、要素以外の値も使用できます。map() メソッドによってコールバック関数に渡される全ての引数を確認していきましょう。
map() メソッドの引数を省略しない構文
map() メソッドの構文は以下のようになります。
arr.map(function(element, index, array){ }, this);コールバック関数である function() が配列の各要素に呼ばれます。map() メソッドは引数に、現在処理している要素の値である element、添字である index、また処理を実行している配列自体である array を渡します。
引数 this はコールバック関数の中で使用されます。デフォルトでは、その値は undefined となっています。
例えば、this の値を数値 80 に変更する方法を以下に記載します。
let arr = [2, 3, 5, 7]
arr.map(function(element, index, array){
console.log(this) // 80
}, 80);console.log() を使用して、他の引数の確認もできます。
let arr = [2, 3, 5, 7]
arr.map(function(element, index, array){
console.log(element);
console.log(index);
console.log(array);
return element;
}, 80);以上が Array.map() メソッドに関する必要な情報です。大抵、コールバック関数で使用される引数は element だけで、残りの引数は省略されることが多くあります。私が普段取り組んでいるプロジェクトでもそうなっています。
このチュートリアルをお読みくださりありがとうございます。
私が書いた他の JavaScript チュートリアル how to sum an array of objects (配列のオブジェクトの値を足す方法) や methods to find a palindrome string (回文の文字列を探すためのメソッド) も役に立つかもしれません。これらは、JavaScript でたびたび質問される問題に関する記事です。
また、Web 開発のチュートリアル (主に JavaScript 関連) について無料ニュースレターを配信しています。