スプレッド演算子と分割代入
スプレッド演算子と分割代入:
この記事はJavaScript Advent Calendar 2018 14日目の記事です。
何かと役立ちそうなスプレッド演算子と分割代入についてです。
ブラウザで使用する際はBabelにかけた方が良いと思います。
スプレッド演算子は配列やオブジェクトなどをその場に展開します。
関数の引数にスプレッド演算子を使えば、配列のメソッドが使用できます。
関数の引数の情報をもったargumentsオブジェクトがありますが、こちらはArray-likeオブジェクトのため配列のメソッドは使用できません。
配列やオブジェクトの値を別個の変数に値を代入できます。
以下のようにすれば、変数の値を簡単に入れ替えられます。
スプレッド演算子と分割代入を組み合わせて使うと便利です。
以下のようにすれば、配列の残りの部分を変数に格納できます。
なお、配列の最初の方を取り出すことはできないようです。
文字列を
スプレッド構文 | MDN
【JavaScript】スプレッド演算子の便利な使い方まとめ - Qiita
JSのスプレッド演算子を理解する - Qiita
分割代入 | MDN
明日は@OldBigBuddhaさんです。
この記事はJavaScript Advent Calendar 2018 14日目の記事です。
何かと役立ちそうなスプレッド演算子と分割代入についてです。
ブラウザで使用する際はBabelにかけた方が良いと思います。
スプレッド演算子
スプレッド演算子は配列やオブジェクトなどをその場に展開します。let array = [1, 2, 3]; func(...array); // => func(1, 2, 3);
let array1 = [1, 2, 3]; let array2 = [...array1, 4, 5]; // => [1, 2, 3, 4, 5]
function increment (...nums) {
return nums.map(v => v + 1);
}
increment(1, 2, 3); // => [2, 3, 4]
分割代入
配列やオブジェクトの値を別個の変数に値を代入できます。let [a, b, c] = [1, 2, 3];
console.log(a); // => 1
console.log(b); // => 2
console.log(c); // => 3
let {x: foo, y: bar} = {x: 1, y: 2};
console.log(foo); // => 1
console.log(bar); // => 2
[a, b] = [b, a]; [a, b, c] = [c, b, a];
組み合わせて使う
スプレッド演算子と分割代入を組み合わせて使うと便利です。以下のようにすれば、配列の残りの部分を変数に格納できます。
let [a, b, ...c] = [1, 2, 3, 4, 5]; console.log(a); // => 1 console.log(b); // => 2 console.log(c); // => [3, 4, 5]
let [...a, b, c] = [1, 2, 3, 4, 5]; // => エラー
.split('')のように分割できます。let [...str] = 'hello'; console.log(str); // => ['h', 'e', 'l', 'l', 'o']
function upperEven (str) {
return [...str].map((v, i) => (i + 1) % 2 === 0 ? v.toUpperCase() : v).join('');
}
upperEven('hello'); // => 'hElLo'
参考
スプレッド構文 | MDN【JavaScript】スプレッド演算子の便利な使い方まとめ - Qiita
JSのスプレッド演算子を理解する - Qiita
分割代入 | MDN
明日は@OldBigBuddhaさんです。
コメント
コメントを投稿