Javascript 如何在switch语句(redux reducer)中更改数组的ID?

Javascript 如何在switch语句(redux reducer)中更改数组的ID?,javascript,reactjs,react-native,redux,Javascript,Reactjs,React Native,Redux,所以我有一系列的待办事项。删除todo时,我试图更改其余项目的id,例如todo[1]的id也为1。如果我有3个项目并删除第一个项目,则情况并非如此,因为第二个项目的id为2,即使它应该为1 这就是我现在拥有的- case REMOVE_TODO: { const newList = state.todos.filter(item => item.id !== action.id); for (let i = 0, newId = 0; i > newList

所以我有一系列的待办事项。删除todo时,我试图更改其余项目的id,例如todo[1]的id也为1。如果我有3个项目并删除第一个项目,则情况并非如此,因为第二个项目的id为2,即使它应该为1

这就是我现在拥有的-

case REMOVE_TODO: {
      const newList = state.todos.filter(item => item.id !== action.id);
      for (let i = 0, newId = 0; i > newList.length; i++, newId++) {
        newList[i].id = newId;
        console.log(newList[i].id); //nothing gets logged
      }
      return {
      ...state,
      todos: newList
      };
    }

没有正确更改项目id,什么都不会发生,即使我在控制台上记录我刚更改的id,什么也不会发生,什么也不会更改。

for循环中的迭代器似乎有问题
i>newList.length
应该是
i

您还可以使用map在newList上循环并获得一组新的数组。

您可以不使用
循环。当您有大量数据时,这将是一个很好的实践

const index = state.todos.findIndex(item => item.id == action.id);
const newList = state.todos.splice(index,1);
return {
      ...state,
      todos: newList
      };

你确定你真的进入了
for
循环吗?我认为您永远无法访问
控制台.log()
,因此没有记录任何get。当然,将其更改为console.log('newId',newList[i].id);让我们知道它打印出来的是什么(如果打印出来的话)。是的,就是这样。非常感谢。