Arrays 从数组中删除多个项-重复使用状态
我正在用redux开发react应用程序。我想从数组中删除多个项。我在我的reducer中写了下面的代码,它从数组中删除单个项,但我想删除多个项Arrays 从数组中删除多个项-重复使用状态,arrays,reactjs,redux,react-redux,redux-thunk,Arrays,Reactjs,Redux,React Redux,Redux Thunk,我正在用redux开发react应用程序。我想从数组中删除多个项。我在我的reducer中写了下面的代码,它从数组中删除单个项,但我想删除多个项 case DELETE_LINK: let dltLink = state.filter(item => { return item._id !== action.data._id }) return { ...state, parentFolderlinks
case DELETE_LINK:
let dltLink = state.filter(item => {
return item._id !== action.data._id
})
return {
...state,
parentFolderlinks: dltLink
};
您可以映射状态并通过一个函数运行它,该函数可以确定您是否想要保留它(我不知道您的逻辑是什么),然后在最后返回数组
const keepThisItem =(item) => {
return item.keep
}
case DELETE_LINK:
let itemsToKeep = []
let dltLink = state.map(item => {
if(keepThisItem(item){
itemsToKeep.push(item)
}
return itemsToKeep
})
似乎您想从
状态.parentFolderlinks
中筛选链接,如果您在操作.data.ids
中有ID,您可以
案例删除链接:
const parentFolderlinks=state.parentFolderlinks.filter(项=>{
return!action.data.id.includes(item.\u id);
});
返回{
状态
父文件夹链接
};
您希望根据什么筛选项目?我假设多个项目不会有相同的id
下面的示例显示了如何在redux中过滤多个项。在这种情况下,食品以类型
为水果
的项目表示,并删除所有其他项目
//所有类型食物的初始状态
常量初始状态={
“食品”:[
{
名称:“苹果”,
类型:“水果”
},
{
名称:“橙色”,
类型:“水果”
},
{
名称:“花椰菜”,
类型:“蔬菜”
},
{
名称:“菠菜”,
类型:“蔬菜”
},
]
}
//演示如何删除多个项目的示例reducer
导出默认值(state=initialState,{type,payload})=>{
开关(类型){
//删除多个类型为“水果”的项目
//也就是说,花椰菜和菠菜都被去掉了,因为它们都是蔬菜
案例删除\u项目\u无\u类型\u水果:
constonlyfruits=state.foods.filter(food=>food.type==“fruit”);
返回{
状态
食物:仅限水果
}
}
}
对于在数组上进行迭代,forEach
方法I(不带返回)就是您想要的。在这里使用map
将返回要保留的数组数组。不确定这是否回答了op的问题,eitherID往往表示唯一性(或者应该如此!),因此使用任何特定的id可能都不允许从数组中删除多个元素。您能否提供更多关于需要从链接数组中删除哪些内容的详细信息?return!action.data.ids.includes(item.id)
更有效,因为它不必遍历整个action.data.ids
数组。