搜索JS数组中的键

时间:2017-10-25 22:50:19

标签: javascript arrays json

鉴于此数组:

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 pjQuery.inArray('feeds', p)以及很多其他内容,请参阅下面的答案。我似乎无法检查这个特定的数组中的键;但是如果你没有答案,请随意投票; p

3 个答案:

答案 0 :(得分:2)

  

如何检查它是否包含bananas密钥?

假设你的意思

  

如何检查任何条目是否包含bananas密钥

使用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 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
    })
  })