简体   繁体   English

如何计算 javascript 中 object 数组中存在的键?

[英]how to count keys present in array of object in javascript?

I have an below array.我有一个下面的数组。 I wanted to know how many time selectedOption key is present in array of Object.我想知道在 Object 数组中存在多少次selectedOption键。 In, some object we don't have key selectedOption .在某些 object 中,我们没有键selectedOption So, the count of key selectedOption should return 4. How we can count these key in javascript?所以,键selectedOption的计数应该返回 4。我们如何计算 javascript 中的这些键?

let data = [{
  id: 123,
  selectedOption: "ABC",
  value: 345
}, {
  id: 234,
  selectedOption: "BCD",
  value: 345
}, {
  id: 356,
  selectedOption: "BGY",
  value: 678
}, {
  id: 456,
  selectedOption: "BCD",
  value: 890
}, {
  id: 870: value: 980
}, {
  id: 385,
  value: 654
}]
data.filter(datum => datum.selectedOption).length

data.filter(d => d.hasOwnProperty('selectedOption')).length

This is a more full proof solution compared to data.filter(datum => datum.selectedOption).length because if selectedOption was a boolean flag with false value it wouldn't be counted.data.filter(datum => datum.selectedOption).length相比,这是一个更全面的证明解决方案,因为如果selectedOption是一个 boolean 标志,其false ,则不会计算在内。

hasOwnProperty will check if the property exists on the object irrespective of the value. hasOwnProperty将检查 object 上是否存在该属性,而与值无关。

For example in this case例如在这种情况下

let data = [{
  id: 123,
  selectedOption: false,
  value: 345
}, {
  id: 234,
  selectedOption: false,
  value: 345
}, {
  id: 356,
  selectedOption: true,
  value: 678
}, {
  id: 456,
  selectedOption: false,
  value: 890
}, {
  id: 870,
  value: 980
}, {
  id: 385,
  value: 654
}];
  1. data.filter(d => d.hasOwnProperty('selectedOption')).length Output: 4 data.filter(d => d.hasOwnProperty('selectedOption')).length Output: 4

  2. data.filter(datum => datum.selectedOption).length Output: 1 data.filter(datum => datum.selectedOption).length Output: 1

There are multiple ways it can be done.有多种方法可以做到。 In the below function,reduce is used.在下面的 function 中,使用了 reduce。 Inside reduce callback it is checking if the object has selectedOption key then increment 1在 reduce 回调中,它正在检查 object 是否具有selectedOption键,然后递增 1

 let data = [{ id: 123, selectedOption: "ABC", value: 345 }, { id: 234, selectedOption: "BCD", value: 345 }, { id: 356, selectedOption: "BGY", value: 678 }, { id: 456, selectedOption: "BCD", value: 890 }, { id: 870, value: 980 }, { id: 385, value: 654 }]; let countSelectedOption = data.reduce((acc, curr) => { acc += curr.selectedOption? 1: 0; return acc; }, 0); console.log(countSelectedOption)

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

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