假设我有一个像这样的JSON列表:
var obj = {"1": "somevalue", "2": "someothervalue"};
如何将{"3": "somevalue"}
添加到对象动态?即不知道已存在两个密钥。
我正在寻找一些查看JSON列表的JavaScript,然后在不会意外覆盖现有密钥的情况下添加一个密钥。
我知道这里有一个类似的问题:Checking if a key exists in a JavaScript object?但我想知道如何动态生成下一个数字键,例如上例中的“3”。
答案 0 :(得分:4)
您可以使用in
检查对象中是否存在密钥。
if (!(key in obj))
obj[key] = 'somevalue'
答案 1 :(得分:0)
如果您喜欢可以帮助您解决此问题的库,可以使用 lodash 中的assign:
var obj = {"1": "somevalue", "2": "someothervalue"};
var obj2 = {"3": "somevalue"};
_.assign(obj, obj2); // Was called _.extend in older versions
答案 2 :(得分:-1)
简单地
if(typeof obj[key] !== 'undefined') {
obj[key] = value
}
所以在你的脚本中,最好将它包装在像
这样的函数中function appendObj(obj, key, value) {
if (typeof obj !== 'undefined') { // lets make sure there is an obj first
if(typeof key!=='undefined' && key && typeof obj[key] !== 'undefined') {
obj[key] = value;
}
else {
obj.push(value);
}
}
}
然后,当您需要向任何对象添加K / V时,
var myNewObj = {"1": "somevalue", "2": "someothervalue"};
appendObj(myNewObj, '4', 'new value')
答案 3 :(得分:-3)
检查并查看属性是否存在
if(! obj[key]) {
obj[key] = value;
}