JavaScript の構造化代入の一般的なシナリオと例 5 つ

JavaScript の構造化代入の一般的なシナリオと例 5 つ

序文

構造化代入構文は、オブジェクト/配列からプロパティ/値を取得し、他の変数に割り当てるために使用できる 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 をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • ES6 における JavaScript 分割代入の一般的な使用法の概要
  • JavaScript の構造化代入を理解するのに役立つ記事
  • JavaScript 構造化分解割り当ての実践ガイド
  • JavaScript 構造化代入の詳細な説明
  • JS ES の新機能、変数分離割り当て
  • js における浅いコピーと深いコピーの詳細な説明
  • JS ES6 変数分割代入の詳細な説明
  • JavaScript の割り当て、浅いコピーと深いコピーの違い

<<:  MySQLのnull値に関する小さな問題

>>:  border-radius 値の設定に関する質問

推薦する

<td></td> タグの境界線スタイルがブラウザに表示されない問題の解決方法

質問: 360ブラウザの互換モードなど、一部のブラウザでは、 <td style="...

Linuxプロセス監視と自動再起動の簡単な実装方法

目的: Linux では、さまざまな理由でサーバー プログラムがダンプされ、ユーザーの使用に影響する...

Ubuntu 上の MySQL における中国語文字化け問題の解決方法

問題を見つける最近 Django を学習しているのですが、MySQL データと組み合わせてデータを挿...

CentOS で新しいユーザーを作成し、キーログインを有効にする方法

目次新しいユーザーを作成する新規ユーザーを承認する新規ユーザーのSSHキーログインを有効にする他のS...

写真とテキストによる MySQL 8.0.21 インストール チュートリアル

1. ダウンロードリンクをダウンロードするダウンロードをクリックします。Oracle アカウントにロ...

IE6 で PNG-24 形式の画像を正常に表示させる 2 つの方法

方法1: </html>の後に次のコードを追加してください。コードをコピーコードは次のと...

MySQL が大規模トランザクションを避けるべき理由とその解決方法

何が大問題ですか?長時間実行され、長時間コミットされないトランザクションは、大規模トランザクションと...

Vue ボタンの権限制御の導入

目次1. 手順1. ボタンの権限を定義する2. ストアを定義する3. 権限指示を作成する4. パーミ...

MySQL 8.0 が起動できない 3534 の解決策

MySQL 8.0 サービスを開始できません最近、 cmdで MySQL サービスを起動するときに遭...

mysql の追加、削除、変更、クエリの基本ステートメント

文法以下は、MySQL テーブルにデータを挿入するための INSERT INTO コマンドの一般的な...

MySQL 8.0 オンライン DDL クイック列追加の概要

目次問題の説明MySQLオンラインDDLで列を追加する従来の方法01 コピー方法02 インプレースメ...

MySQL 8.0.22 のインストールと設定方法のグラフィックチュートリアル

この記事ではMySQL 8.0.22のインストールと設定について記録します。具体的な内容は以下のとお...

入力タイプとは何を意味し、入力を制限する方法

入力を制限する一般的な方法1. ボタンが押されたときに点線のボックスを消すには、入力に属性値hide...

Docker に Elasticsearch 7.6.2 をインストールするチュートリアル

DockerをインストールするDocker をインストールする必要がありますが、それ以上の指示はあり...