javascript - 从数组中删除元素的更好(更快)方法?
问题描述
我正在尝试根据索引数组从数组中删除元素以从数组中删除元素。
这是我的代码:
const array = [0, 1, 2, 3, 4, 5];
const indicesToRemove = [0, 2, 5];
for (let i = indicesToRemove.length; i--;) {
array.splice(indicesToRemove[i], 1);
}
console.log(array);
结果:[1, 3, 4]
它似乎工作正常,但我想知道是否有更好/更快的方法来做同样的事情。
解决方案
如果您可以将删除了这些元素的数组放入一个新的变量名中,我会用filter
它来过滤掉以下中的索引indiciesToRemove
:
const array = [0, 1, 2, 3, 4, 5];
const indicesToRemove = [0, 2, 5];
const filtered = array.filter((_, i) => !indicesToRemove.includes(i));
console.log(filtered);
为了降低计算复杂性,请改用 Set ,这样您只需迭代indiciesToRemove
一次,而不是每次迭代:
const array = [0, 1, 2, 3, 4, 5];
const indicesToRemove = new Set([0, 2, 5]);
const filtered = array.filter((_, i) => !indicesToRemove.has(i));
console.log(filtered);
推荐阅读
- node.js - 警告,FIREBASE_CONFIG 环境变量丢失。初始化 firebase-admin 将失败
- java - 编写一个使用整数密钥加密 .txt 文件的 Java 程序
- python - 如何对 Python ASYNCIO 代码进行分析/基准测试?
- python - pyramid_mailer `Message` 和 `Content-Transfer-Encoding`
- javascript - 在谷歌表格中的同一功能中添加多个范围
- javascript - 列表错误显示在控制台中,但只有一个错误显示在 div
- vba - 将样式应用于选定文本未选定框
- spring-boot - Heroku SpringBoot ClassPathResource 获取 FileNotFoundException
- protractor - 如何等到进度条消失?
- c# - 如何实现管道?