javascript - 看不懂下面代码中的filter和findIndex?在 react-redux 减速器功能中
问题描述
在这段代码中
**reducers: {
addDiary(state, { payload }: PayloadAction<Diary[]>) {
const diariesToSave = payload.filter((diary) => {
return state.findIndex((item) => item.id === diary.id) === -1;
});
state.push(...diariesToSave);
},**
state.findIndex((item)=>item.id === diary.id) 正在返回索引号,但是当我们使它等于 -1 到我在过滤器中的理解时,它总是错误的,因为索引从 0 开始。所以如何我们把日记推到状态?我是新手,正在从以下文章中学习 redux:https ://www.smashingmagazine.com/2020/08/redux-real-world-application/
我指的代码几乎在文章的中间
解决方案
findIndex
方法将返回满足条件的项目的索引,item.id === diary.id
或者在条件永远不会为真的情况下返回 -1。
并且filter
代码中的方法只会返回满足以下条件的那些项目:
state.findIndex((item) => item.id === diary.id) === -1;
因此,如果findIndex
返回 0,则该filter
方法不会将该项目添加到diariesToSave
数组中,因为 0 不等于 -1。只有那些项目将被添加到方法将返回 -1diariesToSave
的数组中。findIndex
希望能消除你的困惑。
推荐阅读
- python - 如何访问上传的 json 文件 google colab
- ios - 如何处理从 iOS 设置应用程序购买
- html - 即使没有内容也能滚动页面
- mysql - 如何将 Mysql2 事务与准备好的语句一起使用
- sql - 查询计划差异内连接/右连接“greatest-n-per-group”、自连接、聚合查询
- python - 如何从 Plotly Python 的框中删除一些东西?
- python - 如何获得多标签分类问题的样本权重和类权重?
- javascript - 我可以从另一个变量中分配一个变量而不改变它在 JavaScript 中的值吗?
- mysql - 无法更新root Mysql密码
- css - 如何将 css 类添加到故事书中的反应组件中?