给定一个带有子对象的对象:
{
a: {
name : 'John'
, isRequired : true
}
, b: {
name : 'Jack'
, isRequired : false
}
, c: {
name : 'Mary'
, isRequired : true
}
, d: {
name : 'Victor'
, isRequired : false
}
};
使用对象的键生成数组,其中 isRequired
为 true
:
['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);
还有更好的选择吗?
答案 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);