Redux reducer用于按名称从列表中删除对象

Him*_*mel 5 ecmascript-6 reactjs redux react-redux

我见过的关于从列表中删除项目的大多数示例都使用列表中项目的索引,例如:

case REMOVE:
  return [
    ...list.slice(0, action.index)
    ...list.slice(action.index + 1)
  ]
Run Code Online (Sandbox Code Playgroud)

但是,如果我想调度一个无法访问列表中项目索引但只能访问名称的操作,我该如何过滤一组对象并仅删除一个具有n名称的对象?

Ste*_*fen 25

更简单的方法是使用数组过滤器功能

case REMOVE:
  return list.filter((item) => item.name !== n)
Run Code Online (Sandbox Code Playgroud)


QoP*_*QoP 6

如果您使用ES6 +来查找索引,则可以使用findIndex()方法.

case REMOVE:
  let index = list.findIndex((x) => x.name === n); 
  return [
    ...list.slice(0, index),
    ...list.slice(index + 1)
  ]
Run Code Online (Sandbox Code Playgroud)