変数を使用してオブジェクトプロパティに動的にアクセスする方法? [Javascript]

このエントリーをはてなブックマークに追加

質問:

動的な変数名を使ってオブジェクトのプロパティにアクセスしようとしてるんだけど、これって可能?

const something = { bar: "Foobar!" };
const foo = 'bar';
something.foo; // このsomething.bar, "Foobar!"を取得したい

By RichW | 質問日時: 2010年11月22日 11:23



回答1:

プロパティにアクセスするには2つの方法
がある

  • ドット表記: something.bar
  • ブラケット記法: something ['bar']

角かっこの間の値は、任意の式。だから、プロパティ名が変数に格納されている場合は、ブラケット表記を使用する必要があるよ。

const foo = 'bar';
something[foo];

By Jan Hančič | 回答日時: 2010年11月22日 11:25



回答2:

javascriptでは次の形でアクセスできるよ:

  • ドット表記 - foo.bar
  • 大括弧 - foo [someVar]または foo [" string "]

でも2番目のケースだけがプロパティに動的にアクセスできる。

var foo = { pName1 : 1, pName2 : [1, {foo : bar }, 3] , ...}
var name = "pName"
var num = 1;
foo[name + num]; // 1
// --
var a = 2;
var b = 1;
var c = "foo";
foo[name + a][b][c]; // bar

By Sonique | 回答日時: 2014年7月1日 15:40



回答3:

以下は、オブジェクトのプロパティにアクセスする方法のES6での例。
2つの文字列を連結して動的に生成されたプロパティ名を使用してアクセスする方法。

var suffix = " name";
var person = {
["first" + suffix]: "Nicholas",
["last" + suffix]: "Zakas"
};
console.log(person["first name"]); // "Nicholas"
console.log(person["last name"]); // "Zakas"

これは計算されたプロパティ名 Computed property namesって呼ばれてる。

By zloctb | 回答日時: 2016年8月2日 19:46



Source: Dynamically access object property using variable

共有 コメント