首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在javascript中一次删除数组中的多个选中项

如何在javascript中一次删除数组中的多个选中项
EN

Stack Overflow用户
提问于 2019-11-18 05:25:52
回答 1查看 271关注 0票数 0

我正在开发一个待办事项列表应用程序。我尝试添加的一个功能是清除选中的项,这些项将删除在复选框中被选中的数组中的项。

我正在运行一个事件侦听器,当单击"clear selected“按钮时,它将运行一个从数组中删除选定项的函数。

我用下面的代码尝试这样做:

代码语言:javascript
复制
clearSelect.addEventListener("click", function() {
if (checkBox.checked == true) {
  liAdd.remove();
  removeSelectedItems(userInput);
  function removeSelectedItems(selected) {
    let selectedItems = toDoArray.indexOf(selected);
    toDoArray.splice(selectedItems, 1);
    console.log(toDoArray);
  }
}
saveToLocalStorage(); });

首先,如果我输入10个项目,然后一次选择并删除3-4个项目--项目的索引与它们在数组中的位置相匹配,它们删除得很好。但是,如果我再选择3-4个并再次删除,则数组项的索引都是乱七八糟的,弹出为-1和0。然后我会奇怪地在刷新后得到一个空数组。我尝试添加一个if (selected != -1)来停止数组项,以显示为-1索引#,但不起作用。

如有需要,欢迎光临,谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-11-18 05:33:24

您可以使用类似数组filter方法的方法吗?您可以将其与Set对象结合使用。

您可以按数组元素或按索引执行此操作。

代码语言:javascript
复制
const myArr = ['a', 'b', 'c', 'd', 'e'];

// By element
const toRemove = new Set(['a', 'c', 'e']);
const filtered = myArr.filter(el => !toRemove.has(el));
console.log(filtered);

// By index
const toRemoveIndex = new Set([0, 2, 4]);
const filteredByIndex = myArr.filter((_, i) => !toRemoveIndex.has(i));

console.log(filteredByIndex);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58905357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档