ES6で動的に命名された変数にデストラクションする方法は?
2023-09-08 01:55:54
質問
次のようなオブジェクトがあるとします。
const user = {
id: 42,
displayName: "jdoe",
fullName: {
firstName: "John",
lastName: "Doe"
}
};
そして
id
と
fullName
.
次のようにします。
const { id, fullName } = user
楽勝でしょう?
という別の変数の値に基づいて再構築を行いたい場合を考えてみましょう。
fields
.
const fields = [ 'id', 'fullName' ]
さて、私の質問は: どのようにしてキーの配列に基づいたデストラクチャリングを行うことができるのでしょうか?
恥ずかしながら下記を試してみましたが、成功しませんでした。
let {[{...fields}]} = user
そして
let {[...fields]} = user
. このような方法はないのでしょうか?
ありがとうございます。
どのように解決するのですか?
短い答え:不可能であり、これからも不可能でしょう。
この背後にある理由: ブロックスコープに新しい動的な名前の変数を導入することになり、事実上、動的な
eval
となり、パフォーマンスの最適化ができなくなるからです。動的な
eval
は、常に非常に危険であるとみなされ、ES5 のストリクトモードから削除されました。
さらに、それはコードの匂いになります - 未定義の変数を参照することは throws
ReferenceError
を投げるので、そのような動的なスコープを安全に処理するために、より多くの定型的なコードが必要になります。
関連
-
[解決済み】ある要素を別の要素に移動させるには?
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み] 2つのJavaScriptオブジェクトのプロパティを動的にマージするにはどうすればよいですか?
-
[解決済み] JavaScriptのオブジェクトに動的に名前を付けたプロパティを追加することは可能ですか?
-
[解決済み] Jestを使用してES6モジュールのインポートをモックするにはどうすればよいですか?
-
[解決済み】プレーンオブジェクトをES6 Mapに変換する方法は?
-
[解決済み] 既存のオブジェクトの上に再構築することは可能ですか?(ジャバスクリプト ES6)
-
[解決済み] CORS OriginヘッダーとCSRFトークンによるCSRF保護
-
[解決済み] AJAX Mailchimp サインアップフォームの統合
-
[解決済み] <ng-content>が空かどうかを確認する方法は?(これまでのAngular 2+で)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] javascriptオブジェクトのプロパティのサブセットを取得する方法
-
[解決済み] なぜ "use strict "はパフォーマンスを10倍向上させるのか?
-
[解決済み] Chart.jsを使ってドーナツチャートの中にテキストを追加するには?
-
[解決済み] JavaScriptで文字列を数値に変換する最速の方法は何ですか?
-
[解決済み] react-routerのハッシュフラグメントからクエリパラメータを取得する
-
[解決済み] javascriptで文字列から関数を作成する方法はありますか?
-
[解決済み] javascriptでオプションのパラメータを扱う
-
[解決済み] HTML要素にスクロールバーがあるかどうかをチェックする
-
[解決済み] JavaScriptの文字列プリミティブとStringオブジェクトの違いは何ですか?
-
[解決済み] JavaScriptでDIVを表示・非表示にするには?