【JavaScript】スプレッド構文

はじめに

スプレッド構文は、JavaScriptでデータを展開する際に非常に便利な機能です。JavaScriptにおけるスプレッド構文の基本的な使い方とその応用について説明します。

スプレッド構文の基本

スプレッド構文は、配列やオブジェクトの要素を展開するために使用されます。スプレッド構文は三点リーダー...を使います。

配列におけるスプレッド構文

配列のコピーや結合に使うことができます。

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

console.log(array2); // [1, 2, 3, 4, 5, 6]

スプレッド構文を使って配列をコピーすることも可能です。

const originalArray = [1, 2, 3];
const copiedArray = [...originalArray];

console.log(copiedArray); // [1, 2, 3]

これは配列を浅いコピーするための簡単な方法です。配列の中にネストされたオブジェクトがある場合、それらは元の配列と同じ参照を持つことに注意が必要です。

オブジェクトにおけるスプレッド構文

オブジェクトにおいても同様に使用できます。新しいオブジェクトを作成し、既存のオブジェクトのプロパティを展開するのに役立ちます。

const obj1 = { a: 1, b: 2 };
const obj2 = { ...obj1, c: 3 };

console.log(obj2); // { a: 1, b: 2, c: 3 }

複数のオブジェクトをマージすることもできます。

const objA = { x: 1, y: 2 };
const objB = { y: 3, z: 4 };
const mergedObj = { ...objA, ...objB };

console.log(mergedObj); // { x: 1, y: 3, z: 4 }

ここで、objAobjByプロパティはobjBの値で上書きされることに注意してください。

スプレッド構文の応用

スプレッド構文は、関数の引数として可変長引数を受け取る際にも便利です。

関数引数への展開

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

const numbers = [1, 2, 3];
console.log(sum(...numbers)); // 6

任意の数の引数を受け取る関数

function sumAll(...args) {
  return args.reduce((total, num) => total + num, 0);
}

console.log(sumAll(1, 2, 3, 4)); // 10

まとめ

スプレッド構文は、配列やオブジェクトの操作をより簡単にし、コードを読みやすくします。データのコピー、結合、分割、引数の展開など、様々な場面で活用できます。

関連記事

【JavaScript】||(論理和演算子)と??(Nullish Coalescing演算子)の違い
# はじめに JavaScriptでの`||`(論理和演算子)と`??`(Nullish Coalescing演算子)は、どちらも値を選択する際に使われる演算子ですが、それぞれの動作には重要な違いがあります。 # ||(論理和演算子) ` [...]
2024年8月1日 10:58
【JavaScript】3種類の変数宣言
# はじめに JavaScriptには、`var`,`let`,`const`という3種類の変数宣言方法があります。これらは、それぞれ異なる特性と用途を持っています。以下に、それぞれの違いを説明します。 # var ## スコープ [...]
2024年7月30日 12:48
【JavaScript】4種類の関数とそれぞれの特性・使い所
# はじめに JavaScriptの関数は、コードの再利用やモジュール化を実現するための基本的な要素です。関数は、プログラムの複雑さを管理しやすくし、コードの可読性と保守性を向上させます。 JavaScriptには、いくつかの異なる方法で関 [...]
2024年7月30日 12:19
【JavaScript】「名前付きエクスポート/インポート」と「デフォルトエクスポート/インポート」
# はじめに JavaScriptのエクスポートは、モジュールを使用してコードを分割し、再利用可能にするための重要な概念です。エクスポートを利用することで、他のファイルから関数や変数、クラスをインポートして使用することができます。 Java [...]
2024年7月30日 11:46
【CSS+JS】メニューアイコンの一種、ベントーメニューの実装方法(アニメーション付き)
# はじめに メニューアイコンの中ではハンバーガーメニューが有名だと思いますが、その他にもいろいろな種類があって、それぞれに名前もつけられています。 <a class="gallery" data-group="gallery" href= [...]
2021年10月18日 14:26
【CSS+JS】メインコンテンツの裏から現れるフッターの実装方法
# はじめに オシャレなサイトなどでたまに見かける「メインコンテンツの裏から現れるフッター」の実装方法について説明します。 # サンプル <iframe height="392" style="width: 100%;" scrollin [...]
2021年10月18日 13:26
【CSS+JS】背景画像の視差効果(パララックス)を実装する方法
# はじめに JavaScriptプラグインを使わずに、背景画像の視差効果(パララックス)をVanilla JS(ピュアなJavaScript)だけで実装する方法について説明します。 # サンプル まず、背景画像の視差効果(パララックス) [...]
2021年10月17日 12:08
【CSS+JS】現在のスクロール量を確実に取得する(プロパティ対応状況まとめ)
# はじめに JavaScriptで現在のスクロール量を取得するためのプロパティはたくさんあります。種類がありすぎるため、かえってどれを使えばいいのかいまいちわからないという人も多いかと思います。 本記事では、各プロパティのブラウザ対応状況 [...]
2021年6月5日 15:51