我的过滤功能有点问题。我有一个数据结构,如下图所示。
如您所见,我有一个名为 bridals 的对象数组,它保存另一个名为 plans 的对象数组。所以在里面我试图过滤人。
这里是过滤函数。
export function peopleFilter(bridals, people){
if (people.length === 0) {
return bridals;
} else {
bridals.forEach(bridal => {
bridal.plans.filter((item) => {
if (item.people === people) {
return bridals;
}
})
})
return bridals;
}
}
peopleFilter()
函数应该过滤 plans 只有选定的值,返回 bridals ,但它什么也不返回。也没有显示错误。
所以我尝试了类似下面的方法。
bridals.forEach(bridal => {
bridal.plans.slice().reverse().forEach((item, index, object) => {
if (item.people !== people) {
bridal.plans.splice(object.length - 1 - index, 1)
}
})
})
return bridals;
上面的代码正在做我想要的。但是有一个问题。所以最后当我不选择任何值时,它应该显示所有计划。但这并不是因为我每次选择一些值时都使用 splice()
删除了计划。
所以我被困在这个问题上。我该如何解决?
最佳答案
在这种情况下,使用 map 遍历新娘数组可能会更容易。在 map 中,过滤每个新娘的计划,然后返回一个新的对象,这可以通过扩展语法来完成。
const filterFunc = (bridals, people) => {
return bridals.map(bridal => {
const filteredPlans = bridal.plans.filter(plan => plan.people === people);
return { ...bridal, plans: filteredPlans };
})
}
关于javascript - 条件过滤函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58230538/