web-dev-qa-db-ja.com

Javascriptオブジェクトの値を動的に設定する方法は?

言葉でケースを説明するのは難しいので、例を挙げましょう。

var myObj = {
    'name': 'Umut',
    'age' : 34
};

var prop = 'name';
var value = 'Onur';

myObj[name] = value; // This does not work

eval('myObj.' + name) = value;   //Bad coding ;)

JavaScriptオブジェクトの変数値で変数プロパティを設定するにはどうすればよいですか?

84
Umut KIRGÖZ
myObj[prop] = value;

うまくいくはずです。変数の名前とその値を混同しました。ただし、文字列でオブジェクトのインデックスを作成してそのプロパティを取得することは、JavaScriptで正常に機能します。

135
Matt Greer
myObj.name=value

または

myObj['name']=value     (Quotes are required)

これらは両方とも交換可能です。

編集:myObj [name] = valueではなく、myObj[prop] = valueを意味していたと思います。 2番目の構文は正常に動作します: http://jsfiddle.net/waitinforatrain/dNjvb/1/

40
bcoughlan

設定したのと同じ方法でプロパティを取得できます。

foo = {
 bar: "value"
}

foo["bar"] = "baz";を設定します

foo["bar"]を取得するには

「baz」を返します。

5
timw4mail

値オブジェクト(vo)に似たものを作成することもできます。

SomeModelClassNameVO.js;

function SomeModelClassNameVO(name,id) {
    this.name = name;
    this.id = id;
}

あなたができるよりも。

   var someModelClassNameVO = new someModelClassNameVO('name',1);
   console.log(someModelClassNameVO.name);
4
user2122112

オブジェクトmyObjを作成するときは、辞書のように考えてください。この場合、2つのキー、name、およびageがあります。

これらの辞書には、次の2つの方法でアクセスできます。

  • 配列のように(例:myObj[name]);または
  • プロパティのように(例:myObj.name);一部のプロパティは予約されているため、最初の方法が優先されることに注意してください。

プロパティとして問題なくアクセスできるはずです。ただし、配列としてアクセスするには、キーを文字列のように扱う必要があります。

myObj["name"]

そうしないと、javascriptはnameが変数であると想定し、nameという変数を作成していないため、期待するキーにアクセスできません。

2
NT3RP

このように簡単myObj.name = value;

0
Arturo Martinez