JavaScript - 使用值作为元素名称推送JSON对象

时间:2016-08-16 09:52:06

标签: javascript arrays json

我正在尝试使用动态属性名称在数组中推送一个对象。

假设我们定义了以下变量

myJSON = {"students" : [ {"name":"Your Name"}, {"name":"My Name"} ] };

attribName = "name";

myValue = "myValue";

parsedJSON = JSON.parse(myJSON);

parsedJSON["students"].push({attribName : myValue});

myJSON = JSON.stringfy(parsedJSON);

这个例子不起作用。有没有办法推动具有动态属性名称的对象?

1 个答案:

答案 0 :(得分:5)

来自 MDN

  

对象属性名称可以是任何有效的JavaScript字符串,也可以是可以转换为字符串的任何内容,包括空字符串。但是,任何不是有效JavaScript标识符的属性名称(例如,具有空格或连字符的属性名称,或以数字开头的属性名称)只能使用square bracket notation访问。当要动态确定属性名称时(在运行时之前未确定属性名称),此表示法也非常有用。

另请注意,您提供的输入为object,而非json

var myJSON = {
  "students": [{
    "name": "Your Name"
  }, {
    "name": "My Name"
  }]
};

var attribName = "name";

var myValue = "myValue";

var obj = {};
obj[attribName] = myValue;
myJSON["students"].push(obj);
console.log(myJSON);