Reputation: 85
I have an below array. I wanted to know how many time selectedOption
key is present in array of Object. In, some object we don't have key selectedOption
. So, the count of key selectedOption
should return 4. How we can count these key in 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
}]
Upvotes: 1
Views: 98
Reputation: 5434
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.
hasOwnProperty
will check if the property exists on the object irrespective of the value.
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
}];
data.filter(d => d.hasOwnProperty('selectedOption')).length
Output: 4
data.filter(datum => datum.selectedOption).length
Output: 1
Upvotes: 1
Reputation: 50291
There are multiple ways it can be done. In the below function ,reduce is used. Inside reduce callback it is checking if the object has selectedOption
key then increment 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)
Upvotes: 0