首页 > 解决方案 > 一旦满足 .find 方法中的条件,就中断 forEach 迭代

问题描述

我正在处理一个待办事项列表分配,该分配基本上包括一个用户能够创建一个列表,并且在该列表中他将能够创建待办事项项目。我正在研究从给定列表中删除待办事项的功能。现在我可以通过遍历每个列表来实现它,找到用户想要删除的 Todo 项目的匹配 Id,获取该项目的索引并使用 Splice() 方法将其从原始数组中删除,这一切都很好,而且效果很好,但我担心的是,即使找到了 ID,初始 ForEach 迭代也会继续迭代每个列表,所以我的问题是,一旦找到匹配的 ID,我如何从迭代中中断?也许我使用了错误的方法来完成,对不起让你的眼睛提前流血了:)

const lists = JSON.parse(localStorage.getItem('lists')) || [];

generatedTrashIcon.addEventListener('click', (event) => {
  deleteTodo(generatedTrashIcon.previousSibling.id);
});

const deleteTodo = (deletedTodoId) => {
  lists.forEach((list) => {
    const findTodo = list.todos.find((todoItem) => todoItem.id === deletedTodoId);

    if (findTodo) {
      const todoIndex = list.todos.indexOf(findTodo);

      list.todos.splice(todoIndex, 1);
      localStorage.setItem('lists', JSON.stringify(lists));
      appendTodosToView(clickedListId);
    }
  });
};

以下是列表对象的输出结构:

{
    "id": "1622610431641",
    "name": "Productivity",
    "todos": [
        {
            "id": "1623013270585",
            "todoItem": "code all day!"
        }
    ]
}

标签: javascriptarrays

解决方案


推荐阅读