JavaScript のスプレッド構文 (...) を活用した配列やオブジェクトの操作について、基本的な使い方から応用例までを解説します。
JavaScript の スプレッド構文 (...
) は、配列やオブジェクトの操作を簡潔に記述できる便利な構文です。
配列のコピーや結合、オブジェクトの展開、関数引数の展開など、さまざまな場面で活用できます。
本記事では、スプレッド構文の基本的な使い方から、実践的な活用方法までを詳しく解説します。
スプレッド構文を使うと、配列の要素を展開して新しい配列を作成できます。
JAVASCRIPTconst numbers = [1, 2, 3]; const newNumbers = [...numbers, 4, 5, 6]; console.log(newNumbers); // [1, 2, 3, 4, 5, 6]
✅ ポイント
...numbers
によって numbers
の中身を展開し、新しい配列を作成。JAVASCRIPTconst arr1 = [1, 2, 3]; const arr2 = [4, 5, 6]; const mergedArray = [...arr1, ...arr2]; console.log(mergedArray); // [1, 2, 3, 4, 5, 6]
オブジェクトのスプレッド構文を使うと、新しいオブジェクトを作成しつつ、既存のオブジェクトのプロパティを展開できます。
JAVASCRIPTconst user = { name: "Alice", age: 25 }; const updatedUser = { ...user, age: 26, country: "Japan" }; console.log(updatedUser); // { name: "Alice", age: 26, country: "Japan" }
✅ ポイント
...user
で user
のプロパティを展開し、新しいオブジェクトを作成。age
プロパティを上書きし、新たに country
プロパティを追加。スプレッド構文を使うと、簡単に配列のコピーを作成できます。
JAVASCRIPTconst originalArray = [1, 2, 3]; const copiedArray = [...originalArray]; console.log(copiedArray); // [1, 2, 3]
✅ ポイント
copiedArray = originalArray
とすると 参照がコピー されてしまう。[...]
を使うことで、新しい配列として独立したコピーが作成される。複数のオブジェクトをマージすることも可能です。
JAVASCRIPTconst obj1 = { a: 1, b: 2 }; const obj2 = { b: 3, c: 4 }; const mergedObject = { ...obj1, ...obj2 }; console.log(mergedObject); // { a: 1, b: 3, c: 4 }
✅ ポイント
b
の値は obj2
の b: 3
で上書きされる。配列の要素を関数の引数として渡すときにもスプレッド構文が使えます。
JAVASCRIPTfunction sum(a, b, c) { return a + b + c; } const numbers = [1, 2, 3]; console.log(sum(...numbers)); // 6
✅ ポイント
sum(...numbers)
によって numbers
の各要素を個別の引数として展開。スプレッド構文では、浅いコピー(shallow copy)が作成されます。
JAVASCRIPTconst original = { nested: { value: 1 } }; const copied = { ...original }; copied.nested.value = 2; console.log(original.nested.value); // 2(変更が反映される)
✅ 対策
JSON.parse(JSON.stringify(obj))
や structuredClone()
を使う。JAVASCRIPTconst deepCopied = JSON.parse(JSON.stringify(original)); deepCopied.nested.value = 3; console.log(original.nested.value); // 2(元のオブジェクトは変更されない)
スプレッド構文 (...
) を活用すると、配列やオブジェクトの操作を簡潔に記述できます。
✅ 学んだこと
[...arr1, ...arr2]
{ ...obj1, ...obj2 }
[...array]
/ { ...object }
func(...args)
スプレッド構文を適切に使いこなし、より効率的な JavaScript コーディングを目指しましょう。
回 | タイトル | リンク |
---|---|---|
第 1 回 | JavaScript の非同期処理 | 詳 細 |
第 2 回 | JavaScript の配列メソッド | 詳 細 |
第 3 回 | let と const の違いと使い分け | 詳 細 |
第 4 回 | JavaScript のスプレッド構文 | この記事 |
第 5 回 | JavaScript の分割代入 | 詳 細 |
第 6 回 | JavaScript の switch 文と case の使い方 | 詳 細 |
第 7 回 | JavaScript の fetch API の使い方 | 詳 細 |
第 8 回 | JavaScript の組み込みクラスを理解する | 詳 細 |
第 9 回 | JavaScript の DOM の概要と基本操作 | 詳 細 |
第 10 回 | 「JSON」とは? その基本と使い方 | 詳 細 |
当サイトの情報は、一般的な参考情報として提供しております。
正確な情報の掲載に努めておりますが、その内容の正確性・完全性・最新性を保証するものではありません。
記事の内容をご利用の際は、ご自身の責任において判断し、必要に応じて専門家にご相談ください。
当サイトの情報の利用により生じたいかなる損害についても、一切の責任を負いかねますのでご了承ください。
※ 本ページでは、著作権法に基づき、適正な引用の範囲内でコンテンツを紹介しています。
オリジナルの情報は発信元をご確認ください。
もし問題がありましたら、こちら からお問い合わせください。