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

Redux reducer to remove an object from a list by name

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

case REMOVE:
  return [
    ...list.slice(0, action.index)
    ...list.slice(action.index + 1)
  ]

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

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

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

更简单的方法是使用数组 filter 函数

case REMOVE:
  return list.filter((item) => item.name !== n)