将variables名称值对dynamic添加到JSON对象
我有一个JSON对象充满ips像
var ips = {}
然后我像这样将ip对象添加到这个对象
ips[ipID] = {}
然后我需要添加dynamic/variables名称值对每个IP,所以我使用这样的代码
var name; var value; var temp = {}; tmp[name] = value
我的问题是,如何将这些名称值对/ tmp添加到我的ipID对象,以便我的结果是这样的
ipID = { name : value, anotherName : anotherValue }
这不是JSON。 这只是Javascript对象,与JSON完全没有关系。
您可以使用括号来dynamic设置属性。 例:
var obj = {}; obj['name'] = value; obj['anotherName'] = anotherValue;
这与使用像这样的对象字面值创build对象完全一样:
var obj = { name : value, anotherName : anotherValue };
如果已经将对象添加到ips
集合中,则使用一对括号访问集合中的对象,并使用另一对来访问对象中的对象:
ips[ipId] = {}; ips[ipId]['name'] = value; ips[ipId]['anotherName'] = anotherValue;
注意与上面代码的相似性,但是您只是使用ips[ipId]
而不是obj
。
您还可以从集合中获取对象的引用,并使用该对象访问保留在集合中的对象:
ips[ipId] = {}; var obj = ips[ipId]; obj['name'] = value; obj['anotherName'] = anotherValue;
您可以使用stringvariables来指定属性的名称:
var name = 'name'; obj[name] = value; name = 'anotherName'; obj[name] = anotherValue;
它是标识该属性的variables(string)的值,所以当您在上面的代码中使用obj[name]
作为这两个属性时,它是variables中的string,在您访问它时决定要访问的属性。
使用ECMAScript 6有一个更好的方法。
您可以在对象属性定义中使用计算的属性名称 ,例如:
var name = 'John'; var value = '42'; var name2 = 'Sarah'; var value2 = '35'; var ipID = { [name] : value, [name2] : value2 }
根据需要,这与用于属性名称的variables等效。
var ipID = { John: "42", Sarah: "35" }
我假设“ips”中的每个条目都可以有多个名称值对 – 所以它是嵌套的。 你可以这样实现这个数据结构:
var ips = {} function addIpId(ipID, name, value) { if (!ips[ipID]) ip[ipID] = {}; var entries = ip[ipID]; // you could add a check to ensure the name-value par's not already defined here var entries[name] = value; }
当使用JavaScript对象时,也可以使用“点符号”来添加一个项目,( JSLint喜欢 )
var myArray = { name : "john" }; //will initiate a key-value array with one item "name" and the value "john" myArray.lastName = "smith"; //will add a key named lastName with the value "smith" //Object {name: "john", lastName: "smith"}
以下是Chrome控制台中的testing截图
根据其他答案提出的build议,我相信这可能会有所帮助:
var object = ips[ipId]; var name = "Joe"; var anothername = "Fred"; var value = "Thingy"; var anothervalue = "Fingy"; object[name] = value; object[anothername] = anothervalue;
然而,这并没有被testing,只是基于不断重复的假设:
object["string"] = value; //object = {string: value}
在Javascript中。
var myObject = { "name" : "john" }; // { "name" : "john" }; myObject.gender = "male"; // { "name" : "john", "gender":"male"};