カテゴリ: JavaScript 更新日: 2026/04/23

JavaScriptのスプレッド構文で配列やオブジェクトを結合する方法|初心者向け完全ガイド

JavaScriptのスプレッド構文で配列やオブジェクトを結合する方法
JavaScriptのスプレッド構文で配列やオブジェクトを結合する方法

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

生徒

「先生、JavaScriptで配列やオブジェクトをまとめる方法ってありますか?」

先生

「はい、JavaScriptではスプレッド構文という便利な書き方を使うと、簡単に配列やオブジェクトを結合できます。」

生徒

「スプレッド構文って何ですか?難しそうですね。」

先生

「スプレッド構文は、配列やオブジェクトの中身を『ひろげる』記号です。『...』という三点リーダーのような形で使います。」

生徒

「具体的にはどうやって結合するんですか?」

先生

「それでは、実際のコードで見てみましょう!」

1. 配列の結合にスプレッド構文を使う

1. 配列の結合にスプレッド構文を使う
1. 配列の結合にスプレッド構文を使う

JavaScriptの配列を結合するときは、concatメソッドを使う方法もありますが、スプレッド構文を使うとより簡単です。スプレッド構文は配列の要素を一つずつ取り出して、新しい配列にまとめることができます。


const array1 = [1, 2, 3];
const array2 = [4, 5, 6];

// スプレッド構文で結合
const combinedArray = [...array1, ...array2];
console.log(combinedArray);

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

このように、...array1...array2を使うだけで、二つの配列が一つにまとめられます。

2. 配列の途中に別の配列を挿入する

2. 配列の途中に別の配列を挿入する
2. 配列の途中に別の配列を挿入する

スプレッド構文は配列の途中に別の配列を挿入することもできます。順番も自由に指定可能です。


const fruits = ['リンゴ', 'バナナ'];
const vegetables = ['ニンジン', 'キャベツ'];

// 配列の途中に挿入
const mixed = [...fruits, 'みかん', ...vegetables];
console.log(mixed);

["リンゴ", "バナナ", "みかん", "ニンジン", "キャベツ"]

このように、任意の場所に要素や別の配列を挿入できるのもスプレッド構文の便利な特徴です。

3. オブジェクトの結合にスプレッド構文を使う

3. オブジェクトの結合にスプレッド構文を使う
3. オブジェクトの結合にスプレッド構文を使う

JavaScriptのオブジェクトもスプレッド構文で簡単に結合できます。オブジェクトのプロパティをまとめて新しいオブジェクトを作ることができます。


const person1 = { name: '太郎', age: 25 };
const person2 = { job: 'エンジニア', city: '東京' };

// オブジェクトの結合
const mergedPerson = { ...person1, ...person2 };
console.log(mergedPerson);

{ name: "太郎", age: 25, job: "エンジニア", city: "東京" }

このようにオブジェクト同士を結合して、新しいオブジェクトを作ることができます。

4. オブジェクトのプロパティを上書きする

4. オブジェクトのプロパティを上書きする
4. オブジェクトのプロパティを上書きする

結合する際、同じプロパティがある場合は、後ろに書いたオブジェクトの値で上書きされます。


const defaultSettings = { theme: 'light', fontSize: 12 };
const userSettings = { fontSize: 16 };

// 後のオブジェクトで上書き
const settings = { ...defaultSettings, ...userSettings };
console.log(settings);

{ theme: "light", fontSize: 16 }

このように、ユーザー設定などを上書きして便利に使えます。

5. 配列のコピーにもスプレッド構文を使う

5. 配列のコピーにもスプレッド構文を使う
5. 配列のコピーにもスプレッド構文を使う

スプレッド構文は配列を結合するだけでなく、コピーを作るときにも便利です。元の配列を壊さずに新しい配列を作れます。


const original = [1, 2, 3];
const copy = [...original];

copy.push(4);

console.log(original);
console.log(copy);

[1, 2, 3]
[1, 2, 3, 4]

このように、元の配列は変更されず、新しい配列にだけ変更が反映されます。

6. オブジェクトのコピーにもスプレッド構文を使う

6. オブジェクトのコピーにもスプレッド構文を使う
6. オブジェクトのコピーにもスプレッド構文を使う

オブジェクトも同様にコピーが可能です。浅いコピーになりますが、便利に使えます。


const originalObj = { a: 1, b: 2 };
const copyObj = { ...originalObj };

copyObj.b = 3;

console.log(originalObj);
console.log(copyObj);

{ a: 1, b: 2 }
{ a: 1, b: 3 }

元のオブジェクトはそのままで、新しいオブジェクトに変更を加えることができます。

7. スプレッド構文と関数呼び出し

7. スプレッド構文と関数呼び出し
7. スプレッド構文と関数呼び出し

スプレッド構文は関数に配列を渡すときにも使えます。複数の引数として展開できます。


function sum(a, b, c) {
  return a + b + c;
}

const numbers = [1, 2, 3];

console.log(sum(...numbers));

6

このように、配列を個別の引数として簡単に渡せるのも便利な使い方です。

8. 注意点:深いコピーには向かない

8. 注意点:深いコピーには向かない
8. 注意点:深いコピーには向かない

スプレッド構文は便利ですが、オブジェクトや配列の中にさらにオブジェクトがある場合、浅いコピーしか作れません。深いコピーが必要な場合は別の方法を使う必要があります。


const nested = { a: 1, b: { c: 2 } };
const shallowCopy = { ...nested };

shallowCopy.b.c = 5;

console.log(nested.b.c); // 5に変わってしまう

5

この点に注意しながら、便利に使うとよいでしょう。

9. スプレッド構文まとめ

9. スプレッド構文まとめ
9. スプレッド構文まとめ

JavaScriptのスプレッド構文を使うと、配列やオブジェクトの結合、コピー、関数呼び出しなどを簡単に行えます。初心者でも短いコードで直感的に操作できるので、ぜひ日常的に使って慣れていきましょう。

まとめ

まとめ
まとめ

今回の記事では、JavaScriptのスプレッド構文を使った配列やオブジェクトの結合、コピー、関数呼び出しの方法について詳しく解説しました。スプレッド構文は「...」という記号で、配列やオブジェクトの中身を展開して新しい配列やオブジェクトにまとめる便利な構文です。配列の結合では[...array1, ...array2]のように書くことで、複数の配列を簡単にまとめられます。また、配列の途中に別の配列や要素を挿入することも自由に行えます。オブジェクトでは{...obj1, ...obj2}で結合でき、同じプロパティがある場合は後ろのオブジェクトの値で上書きされる仕組みです。さらに、配列やオブジェクトのコピーを作るときにもスプレッド構文は便利で、元のデータを壊さずに新しい変数にコピーできます。

さらに、スプレッド構文は関数の引数に配列を展開して渡すときにも役立ちます。例えばsum(...numbers)のように書くことで、配列の各要素を個別の引数として渡せます。ただし、スプレッド構文は浅いコピーしか作れないため、オブジェクトや配列の中にさらにオブジェクトがある場合は深いコピーが必要なときには注意が必要です。このように、スプレッド構文を正しく理解すれば、配列やオブジェクトの操作を効率的に行うことができます。

実際のコードを見ながら、配列やオブジェクトを結合したりコピーしたりすることで、日常的なプログラミングでの操作が直感的に理解できるようになります。初心者でも簡単に扱える構文ですので、繰り返し練習して慣れることをおすすめします。

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

生徒

「先生、スプレッド構文って結局何が便利なんですか?」

先生

「スプレッド構文を使うと、配列やオブジェクトを簡単に結合したりコピーしたりできます。従来のconcatObject.assignより短く書けるのもポイントです。」

生徒

「配列の途中に要素を挿入することもできるんですよね?」

先生

「はい、その通りです。例えば[...fruits, 'みかん', ...vegetables]のように書けば、途中に別の配列や要素を簡単に挿入できます。」

生徒

「オブジェクトも結合できるんですか?」

先生

「もちろんです。オブジェクト同士を{...obj1, ...obj2}でまとめられます。同じプロパティがあれば後のオブジェクトで上書きされるので、設定の上書きにも便利です。」

生徒

「コピーを作るときにも使えるんですね?」

先生

「はい。配列やオブジェクトをコピーするときもスプレッド構文を使えば元のデータを壊さずに新しい変数にコピーできます。ただし、ネストされたオブジェクトの場合は浅いコピーになる点には注意してください。」

生徒

「なるほど。関数に配列を渡すときも便利そうですね。」

先生

「その通りです。例えばsum(...numbers)のように書けば、配列の要素を一つずつ引数として関数に渡せます。スプレッド構文を活用するとコードがすっきり書けて可読性も上がります。」

生徒

「今日はスプレッド構文の便利さがよくわかりました!練習してみます。」

先生

「はい、繰り返し使うことで自然に使いこなせるようになります。配列やオブジェクトの操作が一気に簡単になるので、ぜひ日常的に試してみましょう。」

カテゴリの一覧へ
新着記事
New1
TypeScript
TypeScriptの関数に型をつける方法(引数・戻り値)を初心者向けに徹底解説!
New2
TypeScript
TypeScriptの始め方:開発環境の構築手順【初心者向け】
New3
TypeScript
TypeScriptでExpressのミドルウェアを型安全に定義する方法!バックエンド開発の初心者向け解説
New4
JavaScript
JavaScriptのfilterメソッドで条件に合う要素を抽出する方法
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptでフォームの値を取得する方法を徹底解説!valueプロパティの使い道
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptでHTML5バリデーションAPIを使いこなす!初心者でもわかるフォーム入力チェック
No.3
Java&Spring記事人気No3
TypeScript
TypeScript学習におすすめの無料教材・リファレンスサイト【初心者向け】
No.4
Java&Spring記事人気No4
TypeScript
TypeScriptでコメントを書く正しい書き方と使い分け【初心者向けにやさしく解説】
No.5
Java&Spring記事人気No5
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.6
Java&Spring記事人気No6
JavaScript
JavaScriptで要素を削除する方法(removeChild, removeなど)
No.7
Java&Spring記事人気No7
JavaScript
JavaScriptの現在日時を取得する方法を完全ガイド!初心者でもわかるDate.now()とnew Date()
No.8
Java&Spring記事人気No8
JavaScript
JavaScriptでオブジェクト指向のカプセル化を学ぶ!初心者でもわかるクラスとプロパティの保護方法