我需要删除未通过的整个对象
这是数组
const array = [{
course: 1,
list: [{
id: 1,
name: "john",
code: true
},
{
id: 1,
name: "maria",
code: true
},
]
},
{
course: 2,
list: [{
id: 3,
name: "rose"
},
{
id: 4,
name: "mark",
code: true
}
]
}
]
我需要的是删除没有代码的obj:true,并得到这个
const array = [{
course: 1,
list: [{
id: 1,
name: "john",
code: true
}, ]
},
{
course: 2,
list: [{
id: 1,
name: "mark",
code: true
}]
}
]
我试图在过滤器中制作一张地图,但是根本不起作用
const remove = array.filter(function(lines) {
return lines.map(line => line.list.map(list => list.code))
});
答案 0 :(得分:1)
您可以映射整个数组,然后复制特定项目的所有属性,并分别对list属性进行过滤。
const array = [{
course: 1,
list: [{
id: 1,
name: "john",
code: true
},
{
id: 1,
name: "maria",
code: true
},
]
},
{
course: 2,
list: [{
id: 3,
name: "rose"
},
{
id: 4,
name: "mark",
code: true
}
]
}
]
const filter = arr => arr.map(arrItem => ({
...arrItem,
list: arrItem.list.filter( listItem => listItem.code )
})
)
console.log( filter(array) )
答案 1 :(得分:0)
const filtered = [];
arr.forEach(item => {
const list = item.list.filter(listItem => listItem.code);
if(list.length > 0) {
filter.push({ ...item, list });
}
});
仅当列表中包含任何用code: false
过滤掉的项目后,此方法才将项目添加到过滤后的输出数组中。无论如何要包括它们,您可以这样做:
const filtered = arr.map(item => ({
...item,
list: item.list.filter(listItem => listItem.code)
});