let k = ['adb','dc', 'asd', 'ew'];
let removeIndex = [0,2];
我正在努力尝试找出如何使用removeIndex中列出的索引以编程方式删除k中的元素。
let copy = k.slice();
removeIndex.forEach(i=> {
copy.splice(i,1)
})
copy =>我没有得到想要的结果:['dc','ew']
答案 0 :(得分:4)
我建议您避免使用splice
-它会使副本 发生变异,而您依靠removeIndex
的索引来继续与的索引相对应>原始数组。删除一个元素后,该元素将无法正常工作。
尝试改用.filter
,并检查要迭代的当前项目的索引是否包含在removeIndex
数组中:
let k = ['adb','dc', 'asd', 'ew'];
let removeIndex = [0,2];
const copy = k.filter((_, i) => !removeIndex.includes(i));
console.log(copy);
答案 1 :(得分:0)
在您使用[2,0]
之前,您必须按降序对removeindex进行排序(在您的情况下为forEach
。
答案 2 :(得分:0)
如果removeIndex
包含按升序排列的索引值,则可以按for
元素的降序进行简单的removeIndex
循环,以便从最后一个元素中删除最后一个元素copy
数组。
let k = ['adb','dc', 'asd', 'ew'];
let removeIndex = [0,2];
let copy = k.slice();
for(var i=removeIndex.length-1; i>=0; i--){
copy.splice(removeIndex[i],1);
}
console.log(copy);
答案 3 :(得分:-1)
使用ES6中的Array.filters尝试以下简单解决方案:
const words = ['adb','dc', 'asd', 'ew'];
const result = words.filter(word => word.length < 3);
console.log(result);
// expected output: ["dc", "ew"]
答案 4 :(得分:-1)
这是我必须创建的一个小功能,对我来说很好用。
例如:
let k = ['adb','dc', 'asd', 'ew'];
// you can get the length of the array
let length = k.length;
let array_splice = [];
for (let i = 0; i < length ; i++) {
// you can add your condition here, then
if (i % 2 == 1) {
array_splice.push(k[i]);
}
}
console.log(array_splice); // or return array_splice if you use it to a function;
希望对您有帮助 待会见