将来を見据えたウェブ・アプリケーションの構築:The Codestのエキスパート・チームによる洞察
The Codestが、最先端技術を駆使してスケーラブルでインタラクティブなウェブアプリケーションを作成し、あらゆるプラットフォームでシームレスなユーザー体験を提供することにどのように秀でているかをご覧ください。The Codestの専門知識がどのようにデジタルトランスフォーメーションとビジネス...
ECMAScript 2015は私たちに多くのニュースをもたらし、その結果多くの改善がなされました。今日は、生活を楽にする2つの機能を詳しく見ていこう。残りのパレメータとスプレッド構文です。
rest構文では、不定数の引数を配列として表現することができる。渡されたすべての引数を加算する関数を見てみよう。
const sum = (...args) => args.reduce((prev, current) => prev + current);
console.log(sum(1, 2)); // 3
console.log(sum(1, 2, 3)); // 6
spread演算子を使うと、反復可能なオブジェクトを個々の要素に展開することができる。この機能は、restパラメータで実現した機能とは正反対である。配列、オブジェクト、セット、マップなど、すべてのイテレート可能なオブジェクトに適用できます。
const sum = (x, y, z) => x + y + z;
const numbers = [1, 2, 3];
console.log(sum(...numbers)); // 6
spread構文は、配列をコピーする際に、事実上1レベル深くなる。1レベルとは、最初のレベルの参照がコピーされることを意味する。
const array0 = [1, [2, 3]];
const array1 = [...array0];
console.log(array1); // [1, [2, 3]].
一意な要素のみを格納するSetを作成し、配列に戻す。
const array = [1, 1, 2, 3];
const uniqueElements = [...new Set(array)];
console.log(uniqueElements); // [1, 2, 3].
const array0 = [1, 2];
const array1 = [3, 4];
const concated = [...array0, ...array1];
console.log(concated); // [1, 2, 3, 4].
const [firstElement, ...newArray] = [1, 2, 3, 4];
console.log(firstElement); // 1
console.log(newArray); // [2, 3, 4].
を取り除くこともできる。 n
をコンマで区切ってください。
const [, , , ...newArray] = [1, 2, 3, 4];
console.log(newArray); // [4].
const array0 = [4, 5, 6];
const array1 = [1, 2, 3];
const newArray = [...array1, ...array0];
console.log(newArray); // [ 1, 2, 3, 4, 5, 6 ]。
n
const array = [...Array(10)].map((_, i) => i);
console.log(array); // [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]。
const { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4= { x: 1, y: 2, a: 3, b: 4 };
console.log(x); // 1
console.log(y); // 2
console.log(z); // { a:3, b: 4 }
let person = {(人
名前: 'John'、
年齢: 25、
財布{
合計: 500、
通貨: 'USD'
}
};
let personCopy = { ...person };
console.log(personCopy);
// {
// 名前: 'John'、
// 年齢:25歳、
// 財布{
// 合計: 500、
// 通貨: 'USD'
// }
// }
作成されるオブジェクトのコピーは、元のオブジェクトのすべてのプロパティを持つが、プロトタイプ情報は持たない新しいオブジェクトであることに注意。
person.age = 20;
console.log(person.age); // 20
console.log(personCopy.age); // 25
スプレッド構文はオブジェクトの「浅い」コピーを作成するため、「wallet」プロパティは元のサブオブジェクトへの参照としてのみコピーされることに注意してください。ディープクローニングには、オブジェクトの複雑さに応じて、JSONの文字列化/パースアプローチやLodashが提供する'cloneDeep'メソッドを使用することができます。場合によっては、この方法も役に立ちます:
personCopy = { ...person, wallet = {...person.wallet}};
短絡評価とともにスプレッド演算子を利用することで、作成中の新しいオブジェクトに条件付きでプロパティを追加することができる。
const色= {。
red:'#ff0000'、
green: '#00ff00'、
blue:'#0000ff'
};
const black = { {.
黒: '#000000'
};
let extraBlack = false;
let conditionalMerge = { ...
...色
...(extraBlack ? black : {})
};
console.log(conditionalMerge);
// {
// 赤:'#ff0000'、
// 緑: '#00ff00'、
// 青:'#0000ff'
// }
extraBlack = true;
conditionalMerge = { ...
...色
...(extraBlack ? black : {})
};
console.log(conditionalMerge);
// {
// 赤:'#ff0000'、
// 緑: '#00ff00'、
// 青:'#0000ff'
// 黒: '#000000'
// }
これは、パラメータに空文字列を指定してsplitメソッドを呼び出すのと似ている。
const split = [...'qwerty'];
console.log(split); // [ 'q', 'w', 'e', 'r', 't', 'y' ]。
続きを読む