首页 > 解决方案 > 看不懂下面代码中的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/

我指的代码几乎在文章的中间

标签: javascriptarraysreactjsredux

解决方案


findIndex方法将返回满足条件的项目的索引,item.id === diary.id或者在条件永远不会为真的情况下返回 -1。

并且filter代码中的方法只会返回满足以下条件的那些项目: state.findIndex((item) => item.id === diary.id) === -1;

因此,如果findIndex返回 0,则该filter方法不会将该项目添加到diariesToSave数组中,因为 0 不等于 -1。只有那些项目将被添加到方法将返回 -1diariesToSave的数组中。findIndex

希望能消除你的困惑。


推荐阅读