Javascript における分割代入構文の詳細な説明

Javascript における分割代入構文の詳細な説明

序文

ES6 で初めて導入された「構造化代入構文」を使用すると、配列やオブジェクトの値を異なる変数に挿入できるようになります。難しそうに見えますが、実際には習得も使用も非常に簡単です。

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

ES6 の構造化代入が登場する前は、変数に値を割り当てる必要がある場合、値を直接指定することしかできませんでした。

例えば:

a = 1 とします。
b = 2 とします。
c = 3 とします。
d = 4 とします。
e = 5 とします。

配列の構造化は非常に簡単です。配列内の各値に対して変数を宣言するだけです。配列内のインデックスの代わりに、より少ない変数を定義したり(つまり、最初のいくつかの値のみを処理する場合)、いくつかのインデックスをスキップしたり、REST パターンを使用して残りのすべての値を新しい配列に配置したりすることもできます。

定数数値 = [ 3, 6, 9, 12, 15 ];
定数[
 k, // k = 3
 l, // l = 6
 , // 値をスキップする (12)
 ...n // n = [12, 15]
] = 数値;

オブジェクト分解

オブジェクトの分割は配列の分割と非常によく似ていますが、主な違いは、オブジェクト内の各キーを名前で参照できるため、同じ名前の変数を作成できることです。また、キーを新しい変数名に分解し、必要なキーのみを分解してから、レスト モードを使用して残りのキーを新しいオブジェクトに分解することもできます。

定数obj = { a: 1、 b: 2、 c: 3、 d: 4 };
定数{
 a, // a = 1
 c: d, // d = 3
 ...残り // 残り = { b: 2, d: 4 }
} = オブジェクト;

ネストされた構造化分解

ネストされたオブジェクトと配列は、同じルールを使用して構造化分解できます。違いは、親オブジェクトを変数自体に格納しなくても、ネストされたキーまたは値を直接変数に分解できることです。

const ネスト = { a: { b: 1, c: 2 }, d: [1, 2]};
定数{
 a: {
  b: f, // f = 1
  ...g // g = {c: 2}
 },
 ...h // h = {d: [1, 2]}
} = ネスト;

高度な解体

配列はオブジェクトのように動作するため、オブジェクトの分割代入のキーとしてインデックスを使用することで、分割代入構文を使用して配列から特定の値を取得できます。このメソッドは、配列の他の属性 (配列の長さなど) を取得するためにも使用できます。最後に、デストラクチャリング値が未定義の場合、デストラクチャリングプロセスで変数のデフォルト値を定義することもできます。

定数 arr = [ 5, 'b', 4, 'd', 'e', 'f', 2 ];
定数{
 6: x, // x = 2
 0: y, // y = 5
 2: z, // z = 4
 長さ: カウント、// カウント = 7
 name = 'array', // name = 'array' (arr には存在しません)
 ...restData // restData = { '1': 'b', '3': 'd', '4': 'e', '5': 'f' }
} = arr;

要約する

これで、Javascript の分解代入構文に関するこの記事は終わりです。より関連性の高い JS 分解代入構文のコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • JavaScript 構造化分解割り当ての実践ガイド
  • JavaScript 構造化代入の詳細な説明
  • Javascript 構造化代入の詳細
  • JavaScript の構造化代入の一般的なシナリオと例 5 つ
  • JS ES6 変数分割代入の詳細な説明
  • JavaScript の構造化代入を理解するのに役立つ記事

<<:  nginxリバースプロキシのyum設定の詳細な手順

>>:  pt-heartbeat を使用して MySQL レプリケーションの遅延を監視する方法の詳細な説明

推薦する

期間限定フラッシュセール機能を実装するJavaScript

この記事では、期間限定フラッシュセール機能を実装するためのJavaScriptの具体的なコードを参考...

Vue2.0の双方向データバインディング原則を手動で実装する

一言で言えば: データハイジャック (Object.defineProperty) + パブリッシュ...

Linux カーネル デバイス ドライバー カーネル リンク リストの使用上の注意

/******************** * カーネルにおけるリンクリストの応用********...

MySQL Innodbの主な機能挿入バッファ

目次挿入バッファとは何ですか?挿入バッファのトリガー条件は何ですか?なぜ一意のインデックスにできない...

Vue でユーザー権限に基づいてルートを動的に追加する方法

ユーザーの権限に応じて異なるメニュー ページを表示します。知識ポイントルートガード(事前ガードを使用...

Nginx ソースコードのコンパイルとインストールのプロセス記録

rpm パッケージのインストールは比較的簡単なので、ここでは説明しません。ほとんどのオープンソース ...

MySQL 派生テーブル(Derived Table)の簡単な使用例分析

この記事では、例を使用して、MySQL 派生テーブルの簡単な使用方法を説明します。ご参考までに、詳細...

MySQL の結合テーブルにインデックスを作成する方法

この記事では、MySQL で 2 つのテーブルを関連付ける結合テーブルにインデックスを作成する方法を...

Docker可視化ツールPortainerの導入と中国語翻訳

#docker 検索#docker プルポーター1. イメージを取得した後、中国語パッケージをダウン...

ノードイベントループとメッセージキューの分析

目次非同期とは何ですか?なぜ非同期性が必要なのでしょうか?非同期IOとは何ですか?イベントループとは...

PSを使用して2分でxhtml+cssウェブサイトのホームページを作成します

xhtml+css のウェブサイト再構築、ウェブ標準などについては、記事が多すぎるので繰り返しません...

CSS で平均レイアウトを実現するために負のマージンを使用する例

均等に分散されたレイアウトの場合、通常はネガティブ マージン方式を使用します。次の図は平均的なレイア...

レスポンシブなカードホバー効果を実現するための HTML+CSS

目次成し遂げる:要約:言うことはあまりありませんが、まずは効果を見てみましょう。 カードホバー、レス...

HTML における if 判断の使用

Django Web開発の過程で、HTMLを書く際にバックエンドから同じ名前のリスト変数が渡されるが...

レンダリング関数を使用して、拡張性の高いコンポーネントをカプセル化する

必要:バックグラウンド管理では、次のようなレイアウトでデータを表示する必要があることがよくあります。...