【JavaScript】配列の各要素に関数を適用させて新しい配列を作成するmapメソッドの使い方について解説します。

JavaScript

【JavaScript】配列の各要素に関数を適用させて新しい配列を作成するmapメソッドの使い方について解説します。

なやむくん
配列各要素に対して処理を実行して新しい配列を作成したり、値を抽出したい…。
なやむさん
配列操作のmapメソッドについて詳しく知りたい…。

などの疑問や悩みを解決してまいります。

元の配列を変更せずに、各要素に関数を適用して新しい配列を作成したり、各要素から特定のプロパティを抽出したいということは開発において多いと思います。

そんなときに役立つのがArraymapメソッドです。

今回は配列の各要素に関数を適用させて新しい配列を作成するmapの使い方について解説します。

なやむくん
あまり使ったことないのでどのように記述したらいいのかわからないです…。
みつた
活用例も紹介しているので、そちらもぜひ参考にしてみてください!

mapメソッド

mapメソッドとは、元の配列を変更せずに、各要素に関数を適用して新しい配列を作成するメソッドです。

また各要素に処理を実行して新しい配列を作成するだけでなく、特定の値だけを抽出して新しい配列を作成するということもできます。

みつた
様々な場面で活用できるだけにあまり馴染みのない方は困惑するかもしれませんが、活用例を見ながら理解を深めていきましょう!

記述方法と活用例

mapメソッドは以下のように記述します。

配列.map(配列の値=> 処理内容)

取得元の配列要素内の値それぞれに対して処理を実行していきます。

みつた
それではさっそく活用例をご紹介します。

活用例①:数値配列の各要素に対して2を掛ける

配列numbersが持つ各値に対してelement * 2、つまり2倍の値を取得しています。

numbersが持つ各値に対して処理を実行しているため、結果は[2, 4, 6, 8, 10]となります。

const numbers = [1, 2, 3, 4, 5];
const doubled = numbers.map(element => element * 2);
console.log(doubled); // 出力: [2, 4, 6, 8, 10]
よろこびくん
おぉ!すごいですね!
みつた
mapメソッドはまだまだこんなものじゃないですよ。

活用例②:オブジェクト配列の各要素から特定のプロパティを抽出する

配列usersが持つオブジェクトに対してuser => user.name、つまりキーnameの値を取得しています。

const users = [
  { id: 1, name: 'John' },
  { id: 2, name: 'Jane' },
  { id: 3, name: 'Jake' }
];
const userNames = users.map(user => user.name);
console.log(userNames); // 出力: ['John', 'Jane', 'Jake']

活用例③:ネストされた配列に対しての処理

配列nestedArrayが持つ各配列要素の値に対してsubArray => subArray.join(', ')、つまり配列の全ての要素を順に連結した文字列を返しています。

const nestedArray = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];
const flattened = nestedArray.map(subArray => subArray.join(', '));
console.log(flattened); // 出力: ['1, 2, 3', '4, 5, 6', '7, 8, 9']

活用例④:複数の条件に該当するオブジェクトの取得

配列productsが持つ各オブジェクトのキーpriceに対して、price: product.price * 0.9、つまり0.9倍した状態で新たに配列を作成しています。

const products = [
  { id: 1, name: 'Laptop', price: 1000 },
  { id: 2, name: 'Phone', price: 500 },
  { id: 3, name: 'Tablet', price: 750 }
];
const discountedProducts = products.map(product => ({
  ...product,
  price: product.price * 0.9
}));
console.log(discountedProducts);
// 出力:
// [
//   { id: 1, name: 'Laptop', price: 900 },
//   { id: 2, name: 'Phone', price: 450 },
//   { id: 3, name: 'Tablet', price: 675 }
// ]

…productの部分はスプレッド構文です。

productsの各オブジェクトに対して処理が実行されるときには以下のコードになっています。

const discountedProducts = products.map(product => ({
  id: product.id,
  name: product.name,
  price: product.price * 0.9
}));

スプレッド構文について当サイトでも解説記事がありますのでぜひ参考にしてください。

参考記事
【JavaScript】初心者向け!スプレッド構文について解説します。
【JavaScript】初心者向け!スプレッド構文について解説します。

続きを見る

まとめ

ここまで読んでいただきありがとうございました。本記事のまとめです。

ポイント

  • mapメソッドとは、元の配列を変更せずに、各要素に関数を適用して新しい配列を作成するメソッド
  • 各要素に処理を実行して新しい配列を作成するだけでなく、特定の値だけを抽出して新しい配列を作成するということもできる
  • この記事を書いた人
  • 最新記事

みつた

完全未経験&異業種から30歳の年でIT企業に転職。

Web系開発言語が好き。
どちらかというとバックエンドよりもフロントエンドが好き(現時点では…)

最近はサウナと観葉植物にハマっている。
野球が好きで一応投手。

-JavaScript