Reputation: 1800
Given an object with children objects:
{
a: {
name : 'John'
, isRequired : true
}
, b: {
name : 'Jack'
, isRequired : false
}
, c: {
name : 'Mary'
, isRequired : true
}
, d: {
name : 'Victor'
, isRequired : false
}
};
Generate an array with the keys of the objects where isRequired
is true
:
['a', 'c']
One way to do this is:
const data = {
a: {
name : 'John'
, isRequired : true
}
, b: {
name : 'Jack'
, isRequired : false
}
, c: {
name : 'Mary'
, isRequired : true
}
, d: {
name : 'Victor'
, isRequired : false
}
};
let required = [];
for (const [key, val] of Object.entries(data)) {
if (val.isRequired) {
required.push(key);
}
}
console.log(required);
Any better alternative?
Upvotes: 0
Views: 37
Reputation: 177786
I would use filter
const data = { a: { name: 'John', isRequired: true }, b: { name: 'Jack', isRequired: false }, c: { name: 'Mary', isRequired: true }, d: { name: 'Victor', isRequired: false } };
let required = Object.keys(data).filter(key => data[key].isRequired)
console.log(required);
Upvotes: 2