user5507535
user5507535

Reputation: 1800

JavaScript - Create an array of object keys if the object property has certain value

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

Answers (1)

mplungjan
mplungjan

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

Related Questions