在Javascript中将对象属性指定为新属性的键

时间:2013-06-17 06:36:33

标签: javascript backbone.js underscore.js

我要做的是获取单个Javascript对象的两个属性,并创建一个新数组,第一个属性作为第二个属性的键。

var optionArray = {}

for (var i = 0; i < this.collection.models.length; i++) {

  var f = $('.optionChange:eq('+i+')')[0].value;

  if (f === "yes") { 
    this.collection.models[i].set({"optionValue":"yes"});
  }
  else{
    this.collection.models[i].set({"optionValue":"no"});
  }

  var option1 = this.collection.models[i].get("optionName");                  
  var option2 = this.collection.models[i].get("optionValue");
  var result = option1 + ":" + option2;

  optionArray[i] = {
    option1 : option2
  }

};
console.log(optionArray); 

但这仅输出{option1:“option2 property value”}。键不会改变,它只显示为单词option1。有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:1)

这是错误的,因为在使用{}表示法时不能使用变量作为属性名称:

optionArray[i] = {
    option1 : option2
}

请改为尝试:

optionArray[i] = {} // Make a new empty object
optionArray[i][option1] = option2;

答案 1 :(得分:0)

你必须这样写:

optionArray[i] = {}
optionArray[i][option1] = option2;
相关问题