本文へスキップ
BecomeCoder

JavaScriptコース · 第9章 モダンな書き方 ― 実務のJavaScript · レッスン32

分割代入とスプレッド/レスト ― 取り出す・広げる

ブラウザで完結

導入

オブジェクト配列から値をまとめて取り出すのが分割代入、中身をばらまくのがスプレッド(...)です。モダンJSで最も頻繁に使う記法のひとつです。

説明

分割代入は、オブジェクトや配列から必要な値を一気に取り出します。

const user = { name: "太郎", age: 20, city: "東京" };
const { name, age } = user;   // 必要なプロパティだけ取り出す
console.log(name, age);       // 太郎 20

const nums = [10, 20, 30];
const [first, second] = nums; // 先頭から順に
console.log(first, second);   // 10 20

スプレッド ... は、配列やオブジェクトの中身を広げて新しいものを作ります。元を壊さずコピー・結合できます。

const a = [1, 2, 3];
const b = [...a, 4, 5];       // a を広げて後ろに足す
console.log(b.join(","));     // 1,2,3,4,5

const base = { theme: "light", size: 12 };
const custom = { ...base, size: 16 };  // size だけ上書き
console.log(custom.size);     // 16

関数の引数で受け取る側に ... を付けると、余った引数を配列にまとめます(レスト)。

function sum(...values) {
  return values.reduce((s, n) => s + n, 0);
}
console.log(sum(1, 2, 3, 4)); // 10

デフォルト引数(第5章)やテンプレートリテラル(第2章)と組み合わせると、短く読みやすい関数になります。

function greet({ name, title = "さん" }) {
  return `${name}${title}、こんにちは`;
}
console.log(greet({ name: "花子" }));  // 花子さん、こんにちは

やってみよう

分割代入で取り出す変数を増やしたり、スプレッドで2つの配列を結合したり、... で受け取る sum に引数を増やして試しましょう。

演習

const point = { x: 3, y: 7 }; を分割代入で xy に取り出し、x + y を表示してください。

ヒント1を見る

const { x, y } = point; console.log(x + y);

実際に動かしてみよう

下のエディタにJavaScriptを書いて「実行」を押すと、ブラウザ内のJavaScriptで出力が表示されます。本文の例をそのまま試したり、書き換えたりしてみましょう(console.log の結果が下に出ます。input() を使う回は「標準入力」欄に値を入れてから実行します)。

JavaScript — ブラウザ内で実行

ブラウザ本体のJavaScriptで実行する学習用環境を読み込みます(外部エンジン不要・軽量です)。
スクロールして表示された時点でも自動で読み込まれます。