【问题标题】:How to check if a key is exists in JSON Array of Objects如何检查 JSON 对象数组中是否存在键
【发布时间】:2020-07-11 10:22:17
【问题描述】:

我有如下 JSON 对象数组,

   let data = [
       {
          "node":[
             {
                "name":"aaaaa",
                "count":"2",
             }
          ]
       },
       {
          "client":[
             {
                "name":"bbbbb",
                "count":"2",
             }
          ]
       },
       {
          "ip_address":[
             {
                "name":"ccccc",
                "count":"3",
             }
          ]
       },
       {
          "compute":[
             {
                "name":"dddd",
                "count":"1",
             }
          ]
       }
    ]

let find_key = "ip_address";

需要检查根键是否存在(例如需要查找ip_address是否存在)。 没有 foreach 请。

JSFiddle 链接:https://jsfiddle.net/b9gxhnko/

尝试了以下方法,但没有运气。一些帮助将不胜感激。提前致谢。 尝试如下,但它不起作用(总是返回false),

    console.log(data[0].has(find_key)); // false
    console.log(data.has(find_key)); // false
    console.log(data[0].hasOwnProperty(find_key)); // false

【问题讨论】:

标签: javascript json lodash


【解决方案1】:

你可以试试array.some():

let exists = data.some(x => x[find_key]);

  let data = [
       {
          "node":[
             {
                "name":"aaaaa",
                "count":"2",
             }
          ]
       },
       {
          "client":[
             {
                "name":"bbbbb",
                "count":"2",
             }
          ]
       },
       {
          "ip_address":[
             {
                "name":"ccccc",
                "count":"3",
             }
          ]
       },
       {
          "compute":[
             {
                "name":"dddd",
                "count":"1",
             }
          ]
       }
    ]

let find_key = "ip_address";

let exists = data.some(x => x[find_key]);
console.log(exists);

【讨论】:

    【解决方案2】:

    您有一个对象数组,_.has()in 期望作为单个对象。现在您检查数组是否有一个名为ip_address 的键,但它没有。使用Array.some()或lodash的_.some(),检查每个对象是否有key:

    const data = [{"node":[{"name":"aaaaa","count":"2"}]},{"client":[{"name":"bbbbb","count":"2"}]},{"ip_address":[{"name":"ccccc","count":"3"}]},{"compute":[{"name":"dddd","count":"1"}]}]
    
    // vanilla JS
    const result1 = data.some(o => 'ip_address' in o)
    
    console.log(result1)
    
    // lodash
    const result2 = _.some(data, o => _.has(o, 'ip_address'))
    
    console.log(result1)
    <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      • 1970-01-01
      • 2020-05-02
      • 1970-01-01
      • 2013-09-26
      • 1970-01-01
      相关资源
      最近更新 更多