如何检查 JSON 对象数组中是不是存在键
Posted
技术标签:
【中文标题】如何检查 JSON 对象数组中是不是存在键【英文标题】: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
【问题讨论】:
这能回答你的问题吗? How do I check if an object has a key in javascript? 那些正在使用 has 方法,但我需要使用 _some。我得到了答案。感谢您的回复。 【参考方案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>
【讨论】:
以上是关于如何检查 JSON 对象数组中是不是存在键的主要内容,如果未能解决你的问题,请参考以下文章