如果我不知道哪些密钥已经存在,如何将密钥值对添加到JSON列表的末尾?

时间:2017-07-28 18:36:53

标签: javascript json

假设我有一个像这样的JSON列表:

var obj = {"1": "somevalue", "2": "someothervalue"};

如何将{"3": "somevalue"}添加到对象动态?即不知道已存在两个密钥。

我正在寻找一些查看JSON列表的JavaScript,然后在不会意外覆盖现有密钥的情况下添加一个密钥。

我知道这里有一个类似的问题:Checking if a key exists in a JavaScript object?但我想知道如何动态生成下一个数字键,例如上例中的“3”。

4 个答案:

答案 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;
}