我有以下对象数组:
let a = [
{
b: [1, 11, 12],
c: "a1"
},
{
b: [2, 56, 1],
c: "a2"
},
{
b: [1, 2, 3],
c: "a3"
}
]
我想做最简单的操作,我可以返回一个第二个数组,它是 a
的副本,但只包含以下元素b
数组包含至少一个大于 10
的元素,并且对于每个这样的元素,b
只包含大于 10
。所以我希望输出是:
[
{
b: [11, 12],
c: "a1"
},
{
b: [56],
c: "a2"
}
]
我知道我可以天真地使用循环或使用 filter()
分多个步骤完成此操作,但我想知道是否有有效的单行解决方案。
有什么建议吗?
最佳答案
let a = [{b:[1,11,12],c:"a1"},{b:[2,56,1],c:"a2"},{b:[1,2,3],c:"a3"}]
const output = a.reduce((acc, { b, c }) => {
// filter "b" property
const filtered = b.filter(n => n > 10);
if (filtered.length)
acc.push({ b: filtered, c });
return acc;
}, [])
console.log(output)
关于javascript - 如何根据内部数组属性的过滤来过滤数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54485113/