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

JavaScript - Pushing JSON Object Using Value as Element Name

本文关键字:JSON 对象 元素      更新时间:2023-09-26

我试图将一个对象推入具有动态属性名称的数组中。

假设我们定义了以下变量

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);

这个例子不起作用。是否有一种方法来推动一个对象与动态属性名称?

From MDN

对象属性名可以是任何有效的JavaScript字符串,或者任何可以转换为字符串的东西,包括空字符串。然而,任何不是有效JavaScript标识符的属性名(例如,带有空格或连字符的属性名,或者以数字开头的属性名)只能使用方括号符号访问。当要动态确定属性名称时(当属性名称直到运行时才确定时),此符号也非常有用。

还要注意您提供的输入是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);

function(key, value, json) {
  var obj = {};
  obj[key] = value;
  json['students'].push(obj);
  return arr;
}

您也可以在代码中进行修改:

 myJSON = {"students" : [ {"name":"Your Name"}, {"name":"My Name"} ] };
attribName = "name";
myValue = "myValue123";
myJSON["students"].push({attribName: myValue});
console.log(myJSON);