序文構造化代入構文は、オブジェクト/配列からプロパティ/値を取得し、他の変数に割り当てるために使用できる JavaScript 式です。この構文は、配列やオブジェクトから値を取得しやすくする新しい構文を ECMAscript 6 仕様で導入したものです。 1. データを抽出するこの簡単な製品オブジェクトの例から始めて、JavaScript でオブジェクトを分解する方法を見てみましょう。 定数積 = { id: 1, タイトル: 「ナイキ エアズーム ペガサス 38」、 製品イメージ: "/resources/products/01.jpeg", 表示:「ホワイト/ピュアプラチナ/ミッドナイトネイビー/ウルフグレー」 価格: 120, }; const { id, price, title } = 製品; 次に、対応するプロパティに次のようにアクセスできます。 コンソールログ(id); // 1 console.log(価格); // 120 console.log(title); // ナイキ エアズーム ペガサス 38 構造化分解により、コードをより明確かつ簡潔にすることができます。より複雑なオブジェクトを分解する必要がある場合はどうすればよいでしょうか?つまり、オブジェクト内のオブジェクトです。 ここで、次のように、製品リスト データから製品の 1 つの属性を取得する必要があるとします。 定数製品 = [ { id: 1, タイトル: 「ナイキ エアズーム ペガサス 38」、 価格: 120, }, { id: 2, タイトル: 「ナイキ エア ズーム アルファフライ ネクスト%」 価格: 275, }, { id: 3, タイトル: 「ナイキ ズーム フライ 4」 価格: 89.0, }, ]; ここでは、製品リストが複数のレベルにネストされています。製品情報にアクセスする必要がある場合は、できるだけ多くのレベルを分解して、製品オブジェクトのプロパティを取得できます。 const [tmp, { id, title, price }] = 製品; コンソールログ(id); // 2 console.log(title); // ナイキ エア ズーム アルファフライ NEXT% console.log(価格); // 275 上記のコードは使用方法を示すためだけに使用されています。プロジェクト開発中にこの方法で配列内のオブジェクト情報を取得することは推奨されません。 通常、データリストは必ずしも配列である必要はありません。取得効率の点では、配列よりもマップオブジェクトの方が効率的です。上記のデータは、次のようにマップ オブジェクトに変更できます。 定数製品 = { 1: { タイトル: 「ナイキ エアズーム ペガサス 38」、 価格: 120, }, 2: { タイトル: 「ナイキ エア ズーム アルファフライ ネクスト%」 価格: 275, }, 3: { タイトル: 「ナイキ ズーム フライ 4」 価格: 89.0, }, }; 定数{ 2: { id, タイトル, 価格 }, } = 製品; コンソール.log(id); // 2 console.log(title); // ナイキ エア ズーム アルファフライ NEXT% console.log(価格); // 275 JavaScript では、データは変数やメソッドになる可能性があるため、次のように、構造化代入は関数パラメータの定義にも適しています。 const printArticle = ({ タイトル、コメント }) => { console.log(タイトル); console.log(コメント); }; 印刷記事({ タイトル: 「JavaScript 分割代入」、 備考: 「構造化割り当ての実践的なシナリオの紹介」 }); ReactやVueなどのフレームワークを使用する場合、メソッドの導入など、分解割り当てを行う箇所が多くあります。 2. エイリアス値プロパティとは異なる名前の変数を作成する場合は、オブジェクト分解のエイリアス機能を使用できます。 const { 識別子: aliasIdentifier } = 式; identifier はアクセスするプロパティの名前であり、aliasIdentifier は変数名です。具体的な使い方は以下のとおりです。 定数製品 = { 1: { タイトル: 「ナイキ エアズーム ペガサス 38」、 価格: 120, }, 2: { タイトル: 「ナイキ エア ズーム アルファフライ ネクスト%」 価格: 275, }, 3: { タイトル: 「ナイキ ズーム フライ 4」 価格: 89.0, }, }; 定数{ 2: { 価格: 製品価格 }, } = 製品; console.log(製品価格); // 275 3. 動的プロパティ動的な名前を使用して変数属性を抽出できます (属性名は実行時に認識されます)。 const { [propName]: 識別子 } = 式; propName 式はプロパティ名 (通常は文字列) に評価され、識別子は次のように、分解後に作成された変数名を示す必要があります。 定数製品 = { 1: { タイトル: 「ナイキ エアズーム ペガサス 38」、 価格: 120, }, 2: { タイトル: 「ナイキ エア ズーム アルファフライ ネクスト%」 価格: 275, }, 3: { タイトル: 「ナイキ ズーム フライ 4」 価格: 89.0, }, }; 定数productKey = "1"; const { [productKey]: 製品 } = 製品; console.log(product); // { title: 'Nike Air Zoom Pegasus 38', price: 120 } 上記のコードでは、productKey の値を更新することで product の値を更新できます。 4. オブジェクトの分解における休息分解に REST 構文を追加します。REST プロパティは、分解パターンによって取得されなかった残りの列挙可能なプロパティ キーを収集します。 const { 識別子、...残り } = 式; 分解後、変数識別子にはプロパティ値が含まれます。 REST 変数は、REST プロパティを持つプレーン オブジェクトです。 定数積 = { タイトル: 「ナイキ エアズーム ペガサス 38」、 価格: 120, 数量: 5, カテゴリID: 1, レビュー: 9830, 合計: 45, }; const { タイトル、...その他 } = 製品; console.log(others); // { 価格: 120、数量: 5、カテゴリID: 1、レビュー: 9830、合計: 45 } 配列の場合、Rest を使用して最初の値と最後の値を取得できます。 定数数値 = [1, 2, 3]; const [head, ...tail] = 数値; コンソール.log(ヘッド); // 1 console.log(末尾); // [ 2, 3 ] 5. デフォルト値前述したように、配列を分解するときにデフォルト値を割り当てることができます。 定数RGBA = [255, 34]; 定数[R、G、B = 0、A = 1] = RGBA; コンソールログ(R); // 255 コンソールログ(G); // 34 コンソール.log(B); // 0 コンソールログ(A); // 1 これにより、B と A が定義されていない場合でもデフォルト値が確保されます。 要約するデストラクチャリングは、JavaScript の ES6 バージョンに追加された非常に便利な機能です。構造化分解を使用すると、オブジェクトや配列からプロパティやデータをすばやく簡単に抽出して、個別の変数にすることができます。ネストされたオブジェクトでも適切に機能し、... 演算子を使用して配列に割り当てることができます。 これで、JavaScript の分割代入の一般的なシナリオと例 5 つについての記事は終了です。より関連性の高い JS 分割代入の例については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
質問: 360ブラウザの互換モードなど、一部のブラウザでは、 <td style="...
目的: Linux では、さまざまな理由でサーバー プログラムがダンプされ、ユーザーの使用に影響する...
問題を見つける最近 Django を学習しているのですが、MySQL データと組み合わせてデータを挿...
目次新しいユーザーを作成する新規ユーザーを承認する新規ユーザーのSSHキーログインを有効にする他のS...
この記事では、例を使用して、MySQL ストアド プロシージャを作成 (CREATE PROCEDU...
1. ダウンロードリンクをダウンロードするダウンロードをクリックします。Oracle アカウントにロ...
方法1: </html>の後に次のコードを追加してください。コードをコピーコードは次のと...
何が大問題ですか?長時間実行され、長時間コミットされないトランザクションは、大規模トランザクションと...
目次1. 手順1. ボタンの権限を定義する2. ストアを定義する3. 権限指示を作成する4. パーミ...
MySQL 8.0 サービスを開始できません最近、 cmdで MySQL サービスを起動するときに遭...
文法以下は、MySQL テーブルにデータを挿入するための INSERT INTO コマンドの一般的な...
目次問題の説明MySQLオンラインDDLで列を追加する従来の方法01 コピー方法02 インプレースメ...
この記事ではMySQL 8.0.22のインストールと設定について記録します。具体的な内容は以下のとお...
入力を制限する一般的な方法1. ボタンが押されたときに点線のボックスを消すには、入力に属性値hide...
DockerをインストールするDocker をインストールする必要がありますが、それ以上の指示はあり...