【发布时间】:2021-01-15 05:42:11
【问题描述】:
我知道类似的问题,例如here,但我不知道什么应该是一个简单的问题。我正在尝试过滤对象的对象以获得真实值。
const obj = {
piano: {
scales: { essential: 1 },
chords: { essential: 1 },
triads: { essential: 0 },
},
bass: { scales: { essential: 1 }, triads: { essential: 0 } },
};
function getEssential(state) {
return Object.fromEntries(
Object.entries(state).filter(([, val]) => val.essential)
);
}
const resOne = Object.fromEntries(
Object.entries(obj.piano).filter(([, val]) => val.essential)
);
const resTwo = Object.keys(obj).forEach((el) =>
Object.entries(obj[el]).filter(([, val]) => val.essential)
);
const resThree = Object.keys(obj).forEach((el) => getEssential(el));
console.log(resOne);
console.log(resTwo);
console.log(resThree);
看到 resOne 提供了所需的输出,但只有一个键(在本例中为piano)。我知道我可以创建一个空数组并添加通过测试的数组,但必须有更有效的方法。
我如何获取一个对象,遍历所有键,应用过滤器并返回相同的对象减去必要的属性!== 1?
当前输出:
{ scales: { essential: 1 }, chords: { essential: 1 } }
undefined
undefined
【问题讨论】:
标签: javascript object filter