首页 文章

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

提问于
浏览
0

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

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

如何将 {"3": "somevalue"} 添加到对象 dynamically ?即,不知道已经存在两个密钥 .

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

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

4 回答

  • 0

    只是

    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')
    
  • -1

    您可以使用 in 来检查对象中是否存在密钥 .

    if (!(key in obj))
       obj[key] = 'somevalue'
    
  • 4

    如果你想要帮助你解决这个问题的库,可以使用lodash中的assign:

    var obj = {"1": "somevalue", "2": "someothervalue"};
    var obj2 = {"3": "somevalue"};
    
    _.assign(obj, obj2); // Was called _.extend in older versions
    
  • -3

    检查并查看该属性是否存在

    if(! obj[key]) { 
      obj[key] = value;
    }
    

相关问题