JavaScriptのpush()で変数名をリテラルにしない方法!角括弧で値をキーにするテクニック
JavaScriptでオブジェクトを配列にpush()する際、変数の「値」をプロパティ名(キー)として使いたいのに、そのまま書くと変数名が文字列リテラルとして扱われてしまうことがあります。
この問題を回避するには、角括弧([ ])を使った算出プロパティ名(Computed Property Names)を利用します。以下に具体的なコード例を示します。
コード例
var name = "David";
var putTheAllData = [];
putTheAllData.push({ name: "The name is name will remain same" });
putTheAllData.push({ [name]: "The name is David will be changed" });
console.log(putTheAllData);
ポイントは2つ目のpush()です。{ name: ... }と書いた場合は「name」という文字列そのものがキーになりますが、{ [name]: ... }のように角括弧で変数を囲むことで、変数nameの中身(この場合は"David")がキーとして評価されます。
プログラムの実行方法
上記のプログラムを実行するには、Node.js環境で次のコマンドを使用します。
node fileName.js
実行結果
ここではファイル名をdemo166.jsとして実行します。実行すると以下のような出力が得られます。
PS C:\Users\Amit\javascript-code> node demo166.js
[
{ name: 'The name is name will remain same' },
{ David: 'The name is David will be changed' }
]
解説:なぜ角括弧が必要なのか
出力結果を見ると、1つ目のオブジェクトのキーは「name」という文字列リテラルのままですが、2つ目のオブジェクトのキーは変数nameの値である「David」に置き換わっているのが分かります。
これはES2015(ES6)で導入された算出プロパティ名という機能で、オブジェクトリテラル内で式や変数を評価して、その結果を動的なキーとして設定できます。
ユーザーデータの集約やAPIレスポンスの整形など、キー名を実行時に決めたいケースで非常に便利なテクニックなので、ぜひ覚えておきましょう。
-
JavaScriptのフローチャートでwhileループをわかりやすく図解する方法
whileループの目的は、指定した条件式がtrue(真)である限り、ステートメントやコードブロックを繰り返し実行することです。条件式がfalse(偽)と評価された時点で、ループは自動的に終了します。 whileループの基本構造 JavaScriptにおけるwhileループは、次のような構文で記述します。 while (条件式) { // 繰り返し実行される処理 } フローチャートで見るwhileループの流れ whileループの動作をフローチャートで表すと、処理の流れがひと目で把握できます。フローチャートは主に以下の要素で構成されています。 開始: 処理全体の起点となるノードです。 条件判
-
JavaScriptでページを印刷するにはどうすればよいですか?
JavaScriptでページを印刷するには、print()メソッドを使用します。このメソッドを呼び出すと、ブラウザの標準的な印刷ダイアログボックスが開き、どのプリンターを使用するか、部数はいくつにするかといった印刷オプションを簡単に設定できます。以下は、実際に印刷ダイアログが表示された様子の例です。サンプルコード次のコードを実行すると、ボタンをクリックするだけでページを印刷できる動作を確認できます。<!DOCTYPE html> <html> <body> &nb