gpt4 book ai didi

javascript - 如何在 JavaScript 中同时从不同索引的数组中删除多个元素?

转载 作者:搜寻专家 更新时间:2023-11-01 05:28:34 24 4
gpt4 key购买 nike

我有一个整数数组,我正在使用 .push() 方法将其添加到其中。

我知道 splice() 方法在数组中添加/删除项目,并返回删除的项目。

但是有没有办法同时从数组中的不同索引处删除多个元素呢?

我知道我们也可以使用 filter() 方法,但是 filter() 方法会创建一个新数组,其中包含通过所提供函数实现的测试的所有元素我不想。

例如:-

var array = [1,2,3,4,5];

我知道要删除 3 和 5 我可以按照以下步骤操作:-

  1. array.splice(2, 1);
  2. array.splice(3, 1);

但是我可以在不使用 splice() 方法两次的情况下一步实现吗?

最佳答案

您可以在解构赋值时使用尾随逗号从数组中选择特定元素,将数组中的结果值分配给原始数组引用。

var array = [1,2,3,4,5];
{let [a,b,,c,,] = array; array = [a,b,c]};

console.log(array);

您可以在数组上使用对象解构以从数组中仅获取特定索引

var array = [1,2,3,4,5];
{let {0:a,1:b,3:c} = array; array = [a,b,c]};

console.log(array);

也可以使用.forEach()来迭代一个元素数组来匹配,.indexOf(), .splice()删除与数组中元素值匹配的元素

var array = [1,2,3,4,5];
[3, 5].forEach(p => array.splice(array.indexOf(p), 1));

console.log(array);

使用for..of循环,Array.prototype.findIndex()Array.prototype.splice()

var array = [1,2,3,4,5];
var not = [3, 5];
for (let n of not) array.splice(array.findIndex(v => v === n), 1);

console.log(array);

使用 for..of 循环与 Array.prototype.entries(), Array.prototype.some(), Array.prototype.splice()

var array = [1,2,3,4,5];
var not = [3,5];
for (let [k, p] of array.entries()) not.some(n => !(n-p)) && array.splice(k, 1);

console.log(array);

你也可以使用for循环,Object.assign()设置索引保留在数组的开头,调用.splice() 参数设置为 - .length 要从数组中删除的元素数

var array = [1,2,3,4,5];
var not = [3,5];
for (var o = {}, k = -1, i = 0; i < array.length; i++) {
if (!not.some(n => n === array[i])) o[++k] = array[i];
}
Object.assign(array, o).splice(-not.length);

console.log(array);

使用 Array.prototype.reduce()Object.assign()

var array = [1,2,3,4,5];
var not = [3,5];
Object.assign(array, array.reduce(([o, not, k], p) =>
[Object.assign(o, !not.some(n => n === p) ? {[++k]:p} : void 0), not, k]
, [{}, not, -1]).shift()
).splice(-not.length);

console.log(array);

如果数字是唯一的,另一种选择是使用Set.delete(),将Set对象转换为数组 在解构赋值时使用 rest 元素

var array = new Set;
var not = [3, 5];
for (let n = 1; n <= 5; n++) array.add(n);

for (let n of not) array.delete(n);
[...array] = array;

console.log(array); // `array = new Set(array)`

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com