鉴于此数组:
var a = [
{
"name": "Konji-fu",
"bananas": [
{
"url": "//url1",
"num": 16
},
{
"url": "//url2",
"num": 16
}
]
},
{
"name": "Salias",
"bananas": [
{
"url": "//url4",
"num": 16
},
{
"url": "//url12",
"num": 3
}
]
}
]
如何检查它是否包含bananas
密钥?
加分问题:如何检查其中是否存在bananas
密钥和一个url
密钥?
编辑:
var p = JSON.parse(a)
我尝试了testArray = 'feeds' in p
,jQuery.inArray('feeds', p)
以及很多其他内容,请参阅下面的答案。我似乎无法检查这个特定的数组中的键;但是如果你没有答案,请随意投票; p
答案 0 :(得分:2)
如何检查它是否包含
bananas
密钥?
假设你的意思
如何检查任何条目是否包含
bananas
密钥
// same object, just on one line
const a = [{"name":"Konji-fu","bananas":[{"url":"//url1","num":16},{"url":"//url2","num":16}]},{"name":"Salias","bananas":[{"url":"//url4","num":16},{"url":"//url12","num":3}]}]
let containsBananas = a.some(obj =>
Object.prototype.hasOwnProperty.call(obj, 'bananas'))
console.info('Contains bananas:', containsBananas)

加分问题:如何检查其中是否存在
bananas
密钥和一个url
密钥?
您可以在第一个内容中轻松链接另一个Array.prototype.some()
来电...
// same object, just on one line
const a = [{"name":"Konji-fu","bananas":[{"url":"//url1","num":16},{"url":"//url2","num":16}]},{"name":"Salias","bananas":[{"url":"//url4","num":16},{"url":"//url12","num":3}]}]
let containsBananasWithUrls = a.some(obj =>
Array.isArray(obj.bananas) && obj.bananas.some(banana =>
Object.prototype.hasOwnProperty.call(banana, 'url')
)
)
console.info('Contains bananas with URLs:', containsBananasWithUrls)

如果您需要验证每个数组元素是否符合您的条件,您可以轻松地将Array.prototype.some()
替换为Array.prototype.every()
答案 1 :(得分:1)
看起来这个问题已在另一个讨论中得到解答。您可以查看此页面: Checking if key exists in a JavaScript object
修改强> 另一个讨论中的人提出了这样一个简单的功能:
false
如果您愿意,可以查看此讨论:Check if key exists in array object
答案 2 :(得分:0)
let newArray = array.filter((item)=>{
return item.bananas.filter(item2=>{
return item2.url
})
})