カテゴリ: JavaScript 更新日: 2026/03/16

JavaScriptのmapメソッドで配列の要素を変換するテクニック

JavaScriptのmapメソッドで配列の要素を変換するテクニック
JavaScriptのmapメソッドで配列の要素を変換するテクニック

先生と生徒の会話形式で理解しよう

生徒

「JavaScriptで配列の中の数字や文字をまとめて別の形に変えたいときってどうしたらいいんですか?」

先生

「それなら、mapメソッドが便利です。配列の全ての要素を順番に取り出して、新しい形に変換してくれますよ。」

生徒

「例えばどんな風に使うんですか?」

先生

「具体的な使い方を見てみましょう!」

1. mapメソッドとは?配列の要素を変換する方法

1. mapメソッドとは?配列の要素を変換する方法
1. mapメソッドとは?配列の要素を変換する方法

JavaScriptのmapメソッドは、配列に含まれるすべての要素に対して「特定のルール」を適用し、その結果をもとに新しい配列を作り出す便利な機能です。

最大の特徴は、元の配列(オリジナルデータ)を一切書き換えずに、加工後のデータを別物として生成する点にあります。これは不具合を防ぐためにも非常に重要な仕組みです。プログラミング未経験の方でも、「工場にあるベルトコンベア」をイメージすると分かりやすいでしょう。流れてくる材料(要素)を一つずつ加工して、完成品を別の箱(新しい配列)に並べていくようなイメージです。

例えば、手元にある「1、2、3、4」という数字のリストを、すべて2倍にしたリストに作り変えたい場合は以下のように記述します。


// 元の数字のリスト
let numbers = [1, 2, 3, 4];

// mapを使って、各要素を2倍にする処理
let doubled = numbers.map(function(num) {
  // ここで「2倍にする」という加工を行っています
  return num * 2;
});

// 新しく作成された配列を表示
console.log(doubled);
// 元の配列が変わっていないことを確認
console.log(numbers);

[2, 4, 6, 8]
[1, 2, 3, 4]

このコードでは、mapが配列の数字を一つずつ取り出し、num * 2という計算を行っています。計算が終わると、その結果を詰め込んだ新しい配列[2, 4, 6, 8]が返されます。元のnumbersという変数はそのままなので、安心してデータを加工できるのがmapの大きなメリットです。

2. mapの仕組み:コールバック関数で変換ルールを定義する

2. mapの仕組み:コールバック関数で変換ルールを定義する
2. mapの仕組み:コールバック関数で変換ルールを定義する

mapメソッドの真髄は、引数として渡す「関数(コールバック関数)」にあります。この関数は、配列の要素を1つずつ「材料」として受け取り、指定したルールに従って加工してから「製品」として返す役割を担います。

プログラミング未経験の方にとって「関数」という言葉は難しく感じるかもしれませんが、ここでは単なる「変換のルールブック」だと考えてください。配列の要素が1つずつこのルールブックを通るたびに、新しい形へと生まれ変わります。

例えば、果物の名前が入った配列の末尾に、一律で「セット」という文字を付け加える処理を見てみましょう。


let fruits = ["りんご", "バナナ", "みかん"];

// 「item」には配列の要素が1つずつ順番に入ります
let fruitSets = fruits.map(function(item) {
  // 各要素の後ろに「セット」という文字を結合して返します
  return item + "セット";
});

console.log(fruitSets);

["りんごセット", "バナナセット", "みかんセット"]

このコードでは、mapが「りんご」「バナナ」「みかん」を順番に取り出し、それぞれに「セット」という文字をくっつけて新しい配列に並べています。

また、英単語の配列をすべて大文字に揃えたい場合も、この仕組みを使えば一瞬で完了します。toUpperCase()という、アルファベットを大文字に変換する専用の命令をルールとして記述するだけです。


let words = ["apple", "orange", "grape"];

let upperWords = words.map(function(word) {
  // 小文字を大文字に変換するルールを適用
  return word.toUpperCase();
});

console.log(upperWords);

["APPLE", "ORANGE", "GRAPE"]

このように、mapの中身を書き換えるだけで、数値の計算から文字の加工まで、自由自在にデータを扱うことができるようになります。この「1つずつ取り出して、ルールを適用して、新しい箱に入れる」という流れが、JavaScriptにおけるデータ操作の基本となります。

3. 短く書く方法:アロー関数でスマートに

3. 短く書く方法:アロー関数でスマートに
3. 短く書く方法:アロー関数でスマートに

JavaScriptのアロー関数を使うと、mapの書き方が簡単になります。


let numbers = [1, 2, 3, 4];
let doubled = numbers.map(num => num * 2);
console.log(doubled);  // [2, 4, 6, 8]

関数を短く書けるので、見やすくておすすめです。

4. mapメソッドの活用例いろいろ

4. mapメソッドの活用例いろいろ
4. mapメソッドの活用例いろいろ

他にもよく使う例を紹介します。

  • 数値の配列を文字列に変換する
  • 配列の文字列に「!」をつける
  • オブジェクトの配列から名前だけを取り出す

// 数値を文字列に変換
let numbers = [10, 20, 30];
let strings = numbers.map(num => String(num));
console.log(strings);  // ["10", "20", "30"]

// 文字列に「!」を追加
let words = ["こんにちは", "さようなら"];
let excited = words.map(word => word + "!");
console.log(excited);  // ["こんにちは!", "さようなら!"]

// オブジェクト配列から名前だけ抽出
let people = [
  {name: "太郎", age: 18},
  {name: "花子", age: 22},
  {name: "次郎", age: 20}
];
let names = people.map(person => person.name);
console.log(names);  // ["太郎", "花子", "次郎"]

5. mapメソッドを使うときのポイント

5. mapメソッドを使うときのポイント
5. mapメソッドを使うときのポイント

mapは元の配列を変えずに、新しい配列を作ることを忘れないでください。

また、変換のルールをしっかり考えて、どんな結果にしたいかを明確にしましょう。これができると、データの加工や表示がとても楽になります。

最後に、mapは配列の要素数は変わらず、必ず同じ数の新しい要素を返すことも特徴です。

まとめ

まとめ
まとめ

ここまでJavaScriptの強力な機能であるmapメソッドについて、その基本的な使い方から応用、そしてコードを簡潔に記述できるアロー関数の導入までを詳しく解説してきました。フロントエンド開発の現場において、サーバーから取得したデータを加工したり、UIコンポーネントのリストを生成したりする際に、このメソッドは欠かすことのできない必須の技術と言えるでしょう。

JavaScriptの配列操作におけるmapの重要性

モダンなJavaScriptプログラミングにおいて、データの「不変性(イミュータビリティ)」を保つことは非常に重要です。mapメソッドの最大の特徴は、元の配列を直接書き換えることなく、処理結果を反映した「新しい配列」を生成する点にあります。これにより、予期せぬバグの混入を防ぎ、コードの可読性と保守性を飛躍的に向上させることができます。また、TypeScriptなどの静的型付け言語と組み合わせる際にも、型安全にデータを変換できるため、大規模開発でも頻繁に利用されます。

mapメソッドの活用シーンと実装例

日常的なコーディングでよく遭遇するシチュエーションとして、APIから取得した複雑なオブジェクト配列を、特定のプロパティだけに絞り込んだり、表示用にフォーマットを変更したりする場合が挙げられます。以下のコードでは、商品のリストから税込み価格を算出し、特定の形式に変換するより実務的な実装例を示します。


const products = [
  { id: 1, name: "ノートパソコン", price: 120000 },
  { id: 2, name: "マウス", price: 3500 },
  { id: 3, name: "キーボード", price: 8000 }
];

// 消費税10%を加算したフォーマット済みデータの作成
const formattedProducts = products.map(item => {
  const taxPrice = Math.floor(item.price * 1.1);
  return {
    ...item,
    taxPrice: taxPrice,
    displayText: `${item.name}(税込 ${taxPrice.toLocaleString()}円)`
  };
});

console.log(formattedProducts);

実行結果は以下のようになります。


[
  { id: 1, name: 'ノートパソコン', price: 120000, taxPrice: 132000, displayText: 'ノートパソコン(税込 132,000円)' },
  { id: 2, name: 'マウス', price: 3500, taxPrice: 3850, displayText: 'マウス(税込 3,850円)' },
  { id: 3, name: 'キーボード', price: 8000, taxPrice: 8800, displayText: 'キーボード(税込 8,800円)' }
]

TypeScriptでの型定義を意識したmapの利用

最近の開発現場ではTypeScriptが主流となっています。mapメソッドはジェネリクスをサポートしているため、変換前後の型を明示することで、より堅牢なプログラムを作成することが可能です。型定義を意識した実装スタイルも確認しておきましょう。


interface User {
  id: number;
  userName: string;
}

const userList: User[] = [
  { id: 101, userName: "佐藤" },
  { id: 102, userName: "鈴木" }
];

// 文字列の配列に変換
const userNames: string[] = userList.map((user: User): string => {
  return user.userName;
});

console.log(userNames);

mapメソッドを使いこなすためのヒント

初心者の方が迷いやすいポイントとして、forEachメソッドとの使い分けがあります。forEachは単に配列をループ処理して副作用(ログ出力やDOM操作など)を起こすために使い、戻り値はありません。一方で、mapは必ず「新しい配列を受け取って変数に代入する」という目的があるときに使用します。この違いを明確に理解することで、論理的でスッキリとしたコードが書けるようになります。

また、mapの中で複雑な条件分岐が必要な場合は、三項演算子を活用したり、別途定義した関数をコールバックとして渡したりすることで、メインの処理の流れを邪魔せずに記述することができます。配列操作のメソッドは他にもfilterreduceなどがありますが、まずはこのmapを自由自在に操れるようになることが、JavaScriptマスターへの第一歩です。

先生と生徒の振り返り会話

生徒

「先生、mapメソッドの使い道がすごく具体的になってきました!元の配列を壊さずに新しい配列を作れるっていうのが、実際にコードを書いてみるとすごく安心感がありますね。もし元の配列を書き換えてしまったら、他の場所でそのデータを使っているときに困っちゃいますもんね。」

先生

「その通りです!プログラミングの世界では『副作用を避ける』という考え方がとても大切なんです。mapを使えば、データの流れを一方通行に保てるので、後でコードを見返したときも『あ、ここでデータが変換されているんだな』と直感的に理解できるようになりますよ。」

生徒

「アロー関数での書き方も練習してみましたが、1行で書けると本当にスマートですね。でも、さっきの消費税の計算みたいに少し複雑な処理をするときは、無理に1行にまとめず、波括弧を使って丁寧に書いたほうが良いってことですよね?」

先生

「素晴らしい気づきですね。可読性は常に最優先されるべきです。短く書くことにこだわりすぎて、他の人が読んで意味が分からなくなっては本末転倒ですから。処理が複数行にわたる場合は、しっかりとブロックを作って、必要なら変数に名前をつけて計算過程を分かりやすくしましょう。それが良いエンジニアへの近道です。」

生徒

「ありがとうございます!あと、mapは配列の要素数が変わらないというのもポイントでしたね。要素を減らしたいときはfilterを組み合わせて使えばいいんでしょうか?」

先生

「まさにその通り!filterで必要なデータだけを抽出してから、mapで形を整えるという『メソッドチェーン』という技法もよく使われます。例えば、1000円以上の商品だけを選んでから、その名前を一覧にする、といった感じですね。JavaScriptの配列操作メソッドを組み合わせると、どんな複雑なデータ加工も魔法のように簡単にできるようになります。ぜひ色々試してみてください!」

生徒

「わぁ、楽しそうですね!さっそく自分のポートフォリオ制作で、データの表示部分をmapに書き換えてみます!先生、今日もありがとうございました!」

カテゴリの一覧へ
新着記事
New1
JavaScript
JavaScriptの条件式におけるnull・undefined判定のコツ!初心者でもわかる判定方法ガイド
New2
JavaScript
JavaScriptの条件式で論理演算子(&&, ||, !)を活用する方法!初心者でもわかる使い方ガイド
New3
TypeScript
TypeScriptでエラー処理を共通関数化して効率的に開発しよう!初心者向け例外処理ガイド
New4
JavaScript
JavaScriptの条件式における比較演算子の使い方まとめ!初心者でもわかる基本ルールと活用法
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptのtoStringとString関数の違いを初心者向けに解説
No.3
Java&Spring記事人気No3
TypeScript
TypeScriptでコメントを書く正しい書き方と使い分け【初心者向けにやさしく解説】
No.4
Java&Spring記事人気No4
JavaScript
JavaScriptで統一感のあるコードを書くための基本ルール完全ガイド初心者向けコーディング規約入門
No.5
Java&Spring記事人気No5
JavaScript
JavaScriptプログラムの実行方法まとめ!ブラウザ・Node.js・コンソールの使い方
No.6
Java&Spring記事人気No6
JavaScript
JavaScriptのonclick・onchangeなどの基本イベントを理解しよう
No.7
Java&Spring記事人気No7
TypeScript
TypeScriptのnever型を使ったエラーハンドリング!例外処理を極める安全なコードの書き方
No.8
Java&Spring記事人気No8
JavaScript
JavaScriptの数値フォーマット(小数点以下の桁数調整)を学ぼう