删除基于数组中元素的数组元素作为索引



假设我有一个数组作为

let arr1 = [0,2] This is always sorted

注意:数组中的这些元素表示要从另一个数组中删除的索引。

我有另一个数组作为:

let arrOvj = [1,4,6,7,21,17,12]

我想删除arrObj的元素,基于arr1中存在的索引。

因此,删除后预期的OP应该是,

[4,7,21,17,12].

那么我该如何做到这一点呢。

我试过:

for(let i=0;i<arr1.length;i++){
arrObj.splice(arr1[i],1)
}

但这给出了不正确的结果。

示例:如果arr1=[0]

它删除前两个元素,而不是删除arrObj索引0处的元素。

我还能遵循什么其他选择,以便它只从提供的索引值中删除

如果有人需要任何进一步的信息,请告诉我。

您可以在要删除的索引上向后循环,这样元素就永远不会转移到尚未处理的位置。

let arr1 = [0,2] 
let arrOvj = [1,4,6,7,21,17,12]
for(let i = arr1.length - 1; i >= 0; i--) arrOvj.splice(arr1[i], 1);
console.log(arrOvj);

另一种方法是对数组使用filter方法,并删除相应的索引,如下所示:

let arrObj = [1,4,6,7,21,17,12]
let indexes = [0,2]
let newArr = arrObj.filter((ele, index) => !indexes.includes(index));
console.log(newArr);

您可以在此处使用splice和reduceRight。

let arr1 = [0, 2];
let arrOvj = [1, 4, 6, 7, 21, 17, 12];
arrOvj = arr1.reduceRight((a, c) => (a.splice(c, 1), a), arrOvj);
console.log(arrOvj);

相关内容

  • 没有找到相关文章

最新更新