假設我有一個陣列
let arr1 = [0,2] This is always sorted
注意:陣列中的這些元素表示要從另一個陣列中洗掉的索引。
我有另一個陣列:
let arrOvj = [1,4,6,7,21,17,12]
我想根據 arr1 中存在的索引洗掉 arrObj 的元素。
所以洗掉后預期的OP應該是,
[4,7,21,17,12].
那么我怎樣才能做到這一點。
我試過:
for(let i=0;i<arr1.length;i ){
arrObj.splice(arr1[i],1)
}
但這給出了錯誤的結果。
示例:如果 arr1=[0]
它洗掉前兩個元素,而不是洗掉 arrObj 索引 0 處的元素。
我可以遵循什么其他選擇,以便它僅從提供的索引值中洗掉
如果有人需要任何進一步的資訊,請告訴我。
uj5u.com熱心網友回復:
您可以在要洗掉的索引上向后回圈,以便元素永遠不會移動到尚未處理的位置。
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);
uj5u.com熱心網友回復:
另一種方法是在陣列上使用 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);
uj5u.com熱心網友回復:
你可以在這里使用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);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/310801.html
標籤:javascript 数组
