JavaScriptのmap()
メソッドは、配列の各要素に対して指定された関数を適用し、その結果から新しい配列を作成するための強力なメソッドです。このメソッドを使用すると、元の配列を変更せずに新しい配列を生成できます。本記事では、map()
メソッドの基本的な使い方から応用例まで詳しく解説します。
目次
Arrayクラスのmap()メソッドの基本構文
map()
メソッドの基本的な構文は以下の通りです:
array.map(callback(currentValue, index, array), thisArg);
callback
: 各要素に対して実行される関数。以下の引数を受け取ります:currentValue
: 現在処理されている要素。index
(オプション): 現在処理されている要素のインデックス。array
(オプション):map()
メソッドが呼び出された配列。
thisArg
(オプション):callback
が参照するthis
の値。
map()
メソッドは、新しい配列を返します。新しい配列の各要素は、callback
関数の戻り値に対応します。
Arrayクラスのmap()メソッドの基本的な使い方
各要素に対して関数を適用する
const array = [1, 2, 3, 4, 5];
const newArray = array.map(element => element * 2);
console.log(newArray); // 出力: [2, 4, 6, 8, 10]
この例では、配列の各要素に対して2を掛けた結果を含む新しい配列を作成しています。
インデックスを使用する
map()
メソッドのコールバック関数には、第2引数として要素のインデックスを取ることができます。
const array = ['a', 'b', 'c'];
const newArray = array.map((element, index) => `${index}: ${element}`);
console.log(newArray); // 出力: ['0: a', '1: b', '2: c']
この例では、各要素にそのインデックスを付けた文字列を生成しています。
オリジナル配列の参照
map()
メソッドのコールバック関数には、第3引数としてオリジナルの配列を取ることができます。
const array = [1, 2, 3];
const newArray = array.map((element, index, arr) => element + arr.length);
console.log(newArray); // 出力: [4, 5, 6]
この例では、各要素に配列の長さを足した新しい配列を生成しています。
Arrayクラスのmap()メソッドの応用例
オブジェクトの配列を別の形式に変換する
map()
メソッドは、オブジェクトの配列を別の形式に変換するのにも便利です。
const users = [
{ firstName: 'John', lastName: 'Doe' },
{ firstName: 'Jane', lastName: 'Smith' }
];
const userNames = users.map(user => `${user.firstName} ${user.lastName}`);
console.log(userNames); // 出力: ['John Doe', 'Jane Smith']
この例では、ユーザーオブジェクトの配列をフルネームの配列に変換しています。
深い配列の操作
多次元配列に対して操作を行うこともできます。
const array = [[1, 2], [3, 4], [5, 6]];
const newArray = array.map(subArray => subArray.map(element => element * 2));
console.log(newArray); // 出力: [[2, 4], [6, 8], [10, 12]]
この例では、2次元配列の各要素に対して操作を行い、新しい2次元配列を生成しています。
Arrayクラスのmap()メソッドの注意点
map()
メソッドは、元の配列を変更せず、新しい配列を返します。callback
関数が配列の各要素に対して実行されるため、パフォーマンスに影響を与える可能性があります。大規模な配列に対しては注意が必要です。map()
メソッドは、配列の空の要素に対してはcallback
関数を実行しません。
まとめ
map()
メソッドは、配列の各要素に対して指定された関数を適用し、新しい配列を生成するための強力なツールです。この記事を参考にして、map()
メソッドを効果的に活用してください。