JavaScript ES6 分割演算子の理解と応用

JavaScript ES6 分割演算子の理解と応用

序文

最近 JavaScript を勉強していて、ES6 の分解記号を見ました。これによってコードのシンプルさが飛躍的に向上し、エンタープライズ開発で使用できるようになりました。将来、他の人が職場でこれを使用していても、そのコードが理解できない場合、その影響は甚大です。だから、一生懸命勉強してください。

使うことはできますが、理解しないわけにはいきません✔

JavaScript ES6 には、コードを簡素化し、プログラマーが簡単に記述できるように設計された機能が多数あります。分解演算子は、最も優れた機能の 1 つです。代入ステートメントの使用を減らしたり、データ添え字やオブジェクト プロパティにアクセスする方法を減らしたりすることで、コードを簡潔にし、コードの読みやすさを向上させることができます。

脱構築記号の役割

構造化代入は代入演算子の拡張です。配列またはオブジェクトのパターン マッチングを行い、その中の変数に値を割り当てる方法です。

ES6 では、配列やオブジェクトから値を抽出し、特定のパターンに従って変数に値を割り当てることができます。これを構造化分解と呼びます。

使い方

基本的な使い方

[a,b,c] = [1,2,3]とします。
// a = 1、b = 2、c = 3 とします。

ネストされた使用

// 配列 let [a, [[b], c]] = [1, [[2], 3]];
	コンソールログ(a); // 1
	コンソールログ(b); // 2
	コンソール.log(c); // 3
// オブジェクト let obj = { x: ['hello', {y: 'world'}] };
 次のように記述します。
	console.log(x); // こんにちは
	console.log(y); // ワールド

無視

// 配列 let [a, , b] = [1, 2, 3];
	コンソールログ(a); // 1
	コンソールログ(b); // 3

// オブジェクト let obj = { x: ['hello', { y: 'world' }] };
 { x: [x, { }] } = obj; とします。
	console.log(x); // こんにちは

不完全な解体

// 配列 let [a = 1, b] = [];
	コンソールログ(a); // 1
	console.log(b); // 未定義

// オブジェクト let obj = { x: [{ y: 'world' }] };
 {x: [{y}, x] } = obj;とします。
	console.log(x); // 未定義
	console.log(y); // ワールド

レスト演算子

// 配列 let [a, ...b] = [1, 2, 3];
	コンソールログ(a); // 1
	コンソール.log(b); // [2,3]

// オブジェクト let {a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40};
	コンソールログ(a); // 10
	コンソールログ(b); // 20
	console.log(rest); // { c: 30, d: 40 }

[a, b, c, d, e] = 'hello' とします。
console.log(a); // h
console.log(b); // e
console.log(c); // l
console.log(d); // l
console.log(e); // o

デフォルト値の構造化解除

// 分解パターンに一致する結果があり、一致する結果が未定義の場合、デフォルト値が戻り結果としてトリガーされます。
 [a = 2] = [未定義]とします。 
	コンソールログ(a); // 2
// オブジェクト let {a = 10, b = 5} = {a: 3};
 	コンソールログ(a); // 3
 	コンソールログ(b); // 5

変数の値を入れ替えます。

a = 1 とします。
b = 2 とします。
[a,b] = [b,a];
	コンソールログ(a); // 2
	コンソールログ(b); // 1

分割割り当ての適用

// 1. 浅いクローンとマージ let name = { name: "aaa" }
age = { age: 'bbb' } とします。
person = { ...名前, ...年齢 } とします。
console.log(person) // { 名前: "aaa", 年齢: 'bbb' }

a = [1,2,3]とします。
b = [4,5]とします。
c = [...a,...b] とします。
コンソール.log(c); // [1,2,3,4,5]

// 2. JSON データを抽出します。let JsonData = { id: 10, status: "OK", data: [111, 222] } 
{ id、ステータス、データ: 数値 } = JsonData とします。 
console.log(id, status, numbers); //10 "OK" [111, 222]

// 3. 関数パラメータの定義 // パラメータの順序 function fun1([a, b, c]) { console.log(a, b, c) } 
fun1([1, 2, 3]); // 1 2 3

// パラメータの順序が間違っている function fun2({ x, y, z }) { console.log(x, y, z) } 
fun2({ z: 3, x: 2, y: 1 }); // 2 1 3

// パラメータにはデフォルト値があります function fun3 ([a=1,b]) {
コンソールログ(a,b);
}
fun3([,3]) // 1 3

アプリケーションに関する簡単な説明

JSONデータを抽出する

分解割り当てのいくつかのアプリケーションは上記にリストされています。最も頻繁に使用される 2 番目のアプリケーションは、JSON データを抽出することです。バックエンドからフロントエンドに渡されるデータは JSON データです。フロントエンドは通常、データをオブジェクトに割り当てます。これが使用されるメソッドです。

拡張可能な演算子...

私は Leetcode で質問をしていたときにこれを使いました。arr.push(...arr1) を使用して 2 つの配列をマージしました。これは、上記の浅いクローン作成とマージに少し似ています。配列を結合する以前の操作と比較すると、これははるかに簡単です。

質問 88、ソートされた 2 つの配列を結合します。

var merge = function(nums1, m, nums2, n) {
    nums1.長さ=m;
    nums2.長さ=n;
    nums1.push(...nums2);
    arr = nums1.sort((a,b)=>{とする
        ab を返します。
    })
    arr を返します。
};

...この演算子は配列内のデータを走査し、それを現在のオブジェクトにコピーします。

arr.push(...arr1) メソッドは、arr1 のすべての配列要素を解析し、それらを 1 つずつ arr に追加して、2 つの配列の結合を完了します。

変数値の交換

変数値の交換の応用を見てみましょう。先輩からの面接での質問を漠然と覚えています。余分なメモリスペースを占有せずに、a と b の値を交換してください。当時は 2 つの解決策がありました。1 つは XOR を使用すること、もう 1 つは数学的手法を使用して ab を加算してから別々に減算することです (a=a+b、b=ab、a=ab)。現在、シンボルを分解する方法 [a,b] = [b,a] を使用することも可能ですか?

要約する

これで、JavaScript ES6 のデストラクチャリング演算子の理解と応用に関するこの記事は終了です。ES6 のデストラクチャリング演算子の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • JS 構造化分解の 5 つの興味深い使い方
  • ES6 バージョンの JavaScript で分割代入を解析する
  • JavaScript の構造化代入を理解するのに役立つ記事
  • JavaScript オブジェクト分割の使用例の分析
  • JavaScript 構造化分解割り当ての実践ガイド
  • JavaScript 構造化代入の詳細な説明
  • Javascript 構造化代入の詳細
  • ES6 における JavaScript 分割代入の一般的な使用法の概要

<<:  docker-machineの使い方の詳しい説明

>>:  XHTML でのハイパーリンク タグの使用に関するチュートリアル

推薦する

無効と読み取り専用で入力を読み取り専用に設定する

読み取り専用入力を実現するには、無効と読み取り専用の 2 つの方法があります。当然、どちらの結果も読...

Linuxでスワップパーティションファイルを作成する方法

スワップの紹介Linux のスワップ (スワップ パーティション) は、Windows の仮想メモリ...

MySQLのサブクエリユニオンの効率性についての簡単な説明と

最近の製品テストでは、同時呼び出し数が 10 未満の場合に応答時間が 100 ミリ秒以内に維持できな...

MySQL で 2 つのデータベース テーブル構造を比較する方法

開発およびデバッグのプロセスでは、新しいコードと古いコードの違いを比較する必要があります。比較には、...

Vue で Axios カプセル化を使用するための完全なチュートリアル

序文現在、プロジェクトでは、Axios ライブラリが HTTP インターフェース リクエストによく使...

Centos8.3、dockerデプロイメントspringbootプロジェクトの実際のケース分析

導入現在、k8s は非常に人気があり、それについて学ぶために本を購入しました。しかし、k8s では数...

カレンダー効果を実現するための Bootstrap+JQuery

この記事では、カレンダー効果を実現するためのBootstrap+Jqueryの具体的なコードを参考ま...

MySQL 5.7.18 のインストール中に MySQL サービスの起動に失敗する問題の解決策

MySQL は非常に強力なリレーショナル データベースです。しかし、初心者の中には、インストールや設...

CSS を使用してデータ ホットスポット効果を実現する方法

効果は以下のとおりです。 分析する1. ここでは、点を囲む 3 つの円がズームアニメーションを実行し...

MySQL クエリ フィールド タイプが json の場合の 2 つのクエリ メソッド

テーブル構造は次のとおりです。 id varchar(32) 情報JSONデータ: id = 1 i...

選択ドロップダウンボックスの値をIDに渡してコードを実装する方法

完全なコードは次のとおりです。 HTMLコード:コードをコピーコードは次のとおりです。 <!-...

DockerはRedisをインストールし、操作用のビジュアルクライアントを導入します

1 はじめにRedis 、 ANSI C言語で開発されたKey-Valueベースの高性能NoSQLデ...

Nginx の break と last の違いの詳細な分析

まずは違いについて話しましょう最後に、書き換えられたルールは、次の場所と一致させるために書き換えられ...

Linux システムでデプロイメント プロジェクトを設定する方法

1. ファイアウォールの設定を変更し、対応するポートを開きますLinux システムのファイアウォール...

mysql mycat ミドルウェアの簡単な紹介

1. mycatとはエンタープライズアプリケーション開発のための完全にオープンソースの大規模データベ...