スプレッド&レスト演算子

WBOY
リリース: 2024-08-21 06:10:05
オリジナル
1224 人が閲覧しました

Spread & Rest Operator

  • 既存の配列から文字ノイズの少ない新しい配列を形成します。
  • Spread は要素を値として抽出します。これは不変関数です。
  • [] は新しい配列を書き込む方法です。したがって、spread は元の配列を変更しません。
  • Spread は配列だけでなく、すべての反復可能オブジェクトに対して機能します。
  • 反復可能: String、Array、Map、Set、つまりオブジェクト データ型を除くほとんどの組み込みデータ構造。
  • 分割との違い: 配列からすべての要素を抽出し、新しい変数を作成せず、値 CSV が必要な場所でのみ使用されます。
  • 配列を構築するとき、または値を関数に渡すときに使用されます。
const nums = [5,6,7];
const newNums = [1,2, nums[0],nums[1],nums[2]];
console.log(newNums); // [ 1, 2, 5, 6, 7 ]

is reduced to 

const nums = [5,6,7];
const newNums = [1,2, ...nums];
console.log(newNums); // [ 1, 2, 5, 6, 7 ]
console.log(...newNums); // 1 2 5 6 7
ログイン後にコピー

1. 2 つの配列を結合する

const arr1 = [1,2,3,4,5];
const arr2 = [6,7,8,9];

let nums = [...arr1,...arr2];
nums; // [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]


const firstname = "Peter";
const fullName = [...firstname,' ',"P."];
fullName; // [ 'P', 'e', 't', 'e', 'r', ' ', 'P.' ]

console.log(...firstname); // 'P' 'e' 't' 'e' 'r'
ログイン後にコピー
  • エラーの原因: テンプレート文字列は内部に複数の値を想定していないため、スプレッド演算子はテンプレート文字列内では機能しません。

2. 配列の浅いコピーの作成

const girl = {
  name: 'Melania',
  friends: ['Alina', 'Alice', 'Ayesha', 'Anamika', 'Anaya']
};

const frnz = [...girl.friends];
console.log(frnz); // [ 'Alina', 'Alice', 'Ayesha', 'Anamika', 'Anaya' ]
console.log(girl.friends); // [ 'Alina', 'Alice', 'Ayesha', 'Anamika', 'Anaya' ]
ログイン後にコピー

Spread は、オブジェクトが反復可能ではない場合でもオブジェクトに対して機能します。

let male = {
  "firstName": "Gangadhar",
  "lastName": "Shaktimaan"
}

let female = {
  "firstName": "Geeta",
  "lastName": "Vishwas"
}

let x = {...male, born: 1950};
let y = {...female, born: 1940};

x; // { firstName: 'Gangadhar',   lastName: 'Shaktimaan',   born: 1950 }
y; // { firstName: 'Geeta',  lastName: 'Vishwas',  born: 1940 }```




## Shallow Copy of objects:

let male = {
  "firstName": "Gangadhar",
  "lastName": "Shaktimaan"
}

let character = {...male, firstName: 'Wonderwoman'};

male;         // { firstName: 'Gangadhar', lastName: 'Shaktimaan' }
character;    // { firstName: 'Wonderwoman', lastName: 'Shaktimaan' }

- First name for character object is changed although it was extracted from male object


ログイン後にコピー

休符パターンと休符パラメータ:

  • Rest は Spread の逆の動作をしますが、Spread と同じ構文を持ちます。
  • Spread は、新しい配列を構築するか、値を fn に渡すために使用されました。どちらの場合も、要素を展開するためにスプレッドが使用されました。
  • Rest は同じ構文を使用しますが、それらの値を 1 つの
  • に凝縮します。
  • Spread は配列から要素をアンパックするためのもので、Rest は要素を配列にパックするためのものです。 「」

スプレッド演算子とレスト演算子の構文の違い:
スプレッド演算子 => ... 代入演算子の右側で使用されます。
const nums = [9,4, ...[2,7,1]];

残り演算子 => ... 分割演算子を使用した代入演算子の左側に配置されます
const [x,y,...z] = [9,4, 2,7,1];

## Rest syntax collects all the elements after the last elements into an array. Doesn't include any skipped elements. 
- Hence, it should be the last element in the destructuring assignment.
- There can be only one rest in any destructuring assignment.
ログイン後にコピー

ダイエットをしましょう = ['ピザ', 'バーガー','ヌードル','ロースト','寿司','ドーサ','ウッタパム'];

[最初、、、三番目、...その他] = ダイエット;
最初に;
3 番目;
その他;

- Rest also works with objects. Only difference is that elements will be collected into a new object instead of an arrray.
ログイン後にコピー

let days = { 'mon':1,'tue':2,'wed':3,'thu':4,'fri':5,'sat':6,'sun':7};
let {sat, sun, ...working} = days;
let off = {土、日};

働いています。 // { 月: 1、火: 2、水: 3、木: 4、金: 5 }
オフ; // { 土: 6、日: 7 }

- Although both look same, but they work differently based on where they are used.

ログイン後にコピー

レストとスプレッドの微妙な違い:

  • カンマで区切って値を記述する場合はスプレッド演算子が使用されます
  • 残りのパターンが使用され、変数名をカンマで区切って記述します。

ログイン後にコピー

以上がスプレッド&レスト演算子の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート