javascript - 如何按索引从数组中删除多个元素?

标签 javascript arrays lodash

使用 Array.splice 就可以,只要它是单个值即可。 假设我有一个包含 10 个元素的数组,我想删除元素 2、4 和 8,在 for 循环中使用 Array.splice(index,1) 是一个错误想法是因为每个元素的索引在每次拼接操作后都会发生变化。

如何删除特定的数组项,然后相应地重新排列数组

var array = ["Apple", "Banana", "Peach", "Pumpkin", "Tomato", "Mango", "Guava"];

remove(array, 4,5); //Is there a lodash function for this?

//desired result --> ["Apple", "Banana", "Peach", "Guava"]

最佳答案

有一个 Lodash 方法 _.pullAt将数组中指定的元素(就地)拉出:

_.pullAt(array, [indexes])

Removes elements from array corresponding to indexes and returns an array of removed elements.

因此,像这样应用它:

var array = ["Apple", "Banana", "Peach", "Pumpkin", "Tomato", "Mango", "Guava"];
_.pullAt(array, [4, 5]);

如果您想提取不相邻的项目(从文档中):

var array = ['a', 'b', 'c', 'd'];
var pulled = _.pullAt(array, [1, 3]);

console.log(array);
// => ['a', 'c']

这将删除索引 4 和 5 处的元素,并返回删除的元素(如果需要)。


当然,您可以使用普通 JavaScript 向后查看 Nick A. mentioned并从后面取出元素。这样做的原因是因为从后面移除不会使更改 length 成为问题。考虑这个例子,我想删除第一个和第三个元素:

[1, 3, 7, 9]

如果我要“向前”循环,我会删除索引 1 (3) 处的元素,但长度会更改为 3,并且索引 3 处将没有元素!如果我要向后循环,我会删除索引 3 first (9) 处的元素。那么长度将是 3,但是它不会影响它之前的任何元素,索引 1 处的元素仍然在索引 1 处,因此从后面的工作中移除。

关于javascript - 如何按索引从数组中删除多个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44851718/

相关文章:

c++ - 使用 C++ 分离数组中的奇数和偶数

java - Java 数组多项式加减法

javascript - 查找对象数组中每个索引的平均值?

javascript - Webpack 5 不捆绑 CSS url() Assets 模块

javascript - 如何重置 QUnit 中的状态?

arrays - 如何检查数组中的所有值是否都是相同的 mongodb 聚合?

javascript - 使用 Lodash 填充数组

javascript/lodash 二进制搜索功能

javascript - 无法在 componentWillMount 中设置状态

javascript - 将 DateTime 转换为本地时间