我正在尝试使用动态属性名称在数组中推送一个对象。
假设我们定义了以下变量
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);
这个例子不起作用。有没有办法推动具有动态属性名称的对象?
答案 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);