繁体   English   中英

如何检查 JSON 对象数组中是否存在键

[英]How to check if a key is exists in JSON Array of Objects

我有像下面这样的对象的 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";

需要检查root key是否存在(比如需要查找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

您可以尝试使用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);

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

 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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM