JavaScript - 如果对象属性具有特定值,则创建一个对象键数组

时间:2021-05-16 12:55:35

标签: javascript arrays object key

给定一个带有子对象的对象:

   {
        a: {
           name  : 'John'
         , isRequired : true
      }
      , b: {
           name  : 'Jack'
         , isRequired : false
      }
      , c: {
           name  : 'Mary'
         , isRequired : true
      }
      , d: {
           name  : 'Victor'
         , isRequired : false
      }
   };

使用对象的键生成数组,其中 isRequiredtrue

['a', 'c']

一种方法是:

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);

还有更好的选择吗?

1 个答案:

答案 0 :(得分:2)

我会使用过滤器

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);