如何检查JSON对象数组中是否存在某个键
如何检查JSON对象数组中是否存在某个键
我有以下的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。感谢提前帮助。
尝试了以下方式但没有成功。非常感谢帮助。
尝试像下面这样,但它不起作用(始终返回`false`),
console.log(data[0].has(find_key)); // false console.log(data.has(find_key)); // false console.log(data[0].hasOwnProperty(find_key)); // false
如何检查JSON数组中的对象是否存在某个键
当你有一个对象数组,并且希望检查是否存在某个键时,你可以使用Array.some()
方法或lodash的_.some()
方法来检查每个对象是否具有该键。
以下是一个使用vanilla JS和lodash的示例代码:
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(result2)
在上述代码中,我们有一个名为data
的数组,它包含了一些对象。我们想检查数组中的每个对象是否具有名为ip_address
的键。
首先,我们使用vanilla JS的Array.some()
方法,该方法接受一个回调函数,并在数组中的任何对象中返回true时停止遍历。在回调函数中,我们使用in
操作符来检查对象是否具有特定键。如果有任何对象具有该键,则Array.some()
方法将返回true。
然后,我们使用lodash的_.some()
方法,该方法具有相同的功能。回调函数使用_.has()
方法来检查对象是否具有特定键。如果任何对象具有该键,则_.some()
方法将返回true。
在上述示例中,result1
和result2
的值将分别为true
和true
,因为数组中的一个对象具有名为ip_address
的键。
请注意,在使用lodash之前,您需要在HTML文件中包含lodash库的链接,如下所示:
这就是如何检查JSON数组中的对象是否存在某个键的方法。您可以根据自己的需求选择使用vanilla JS还是lodash来实现。希望本文对您有所帮助!
问题出现的原因是需要在一个JSON数组的对象中检查是否存在某个键。
解决方法是使用JavaScript的`array.some()`方法来判断是否存在该键。具体代码如下:
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);
以上代码会在控制台输出是否存在`ip_address`这个键的结果。