1371

JavaScript でいくつかのオブジェクトを構築し、それらのオブジェクトを配列にプッシュしています。使用するキーを変数に格納してから、次のようにオブジェクトを作成しています。

var key = "happyCount";
myArray.push( { key : someValueArray } );

しかし、すべてのオブジェクトのオブジェクトの配列を調べようとすると、キーは"key"変数キーの値ではありません。変数からキーの値を設定する方法はありますか?

より良い説明のためのフィドル: http://jsfiddle.net/Fr6eY/3/

4

2 に答える 2

2527

最初にオブジェクトを作成し、次に使用[]して設定する必要があります。

var key = "happyCount";
var obj = {};

obj[key] = someValueArray;
myArray.push(obj);

2021年更新:

計算されたプロパティ名機能は ECMAScript 2015 (ES6) で導入され、JavaScript オブジェクト リテラル表記でオブジェクト プロパティの名前を動的に計算できるようになりました。

const yourKeyVariable = "happyCount";
const someValueArray= [...];

const obj = {
    [yourKeyVariable]: someValueArray,
}
于 2012-07-16T16:26:12.093 に答える
468

ES6では、このようにすることができます。

var key = "name";
var person = {[key]:"John"}; // same as var person = {"name" : "John"}
console.log(person); // should print  Object { name="John"}

    var key = "name";
    var person = {[key]:"John"};
    console.log(person); // should print  Object { name="John"}

計算されたプロパティ名と呼ばれ、角かっこ表記(角かっこ)を使用して実装されます[]

例:{ [variableName] : someValue }

ECMAScript 2015以降、オブジェクト初期化構文は計算されたプロパティ名もサポートします。これにより、式を角かっこ[]で囲むことができ、プロパティ名として計算および使用されます。

ES5の場合は、次のようなものを試してください

var yourObject = {};

yourObject[yourKey] = "yourValue";

console.log(yourObject );

例:

var person = {};
var key = "name";

person[key] /* this is same as person.name */ = "John";

console.log(person); // should print  Object { name="John"}

    var person = {};
    var key = "name";
    
    person[key] /* this is same as person.name */ = "John";
    
    console.log(person); // should print  Object { name="John"}

于 2012-07-16T16:29:01.607 に答える