我试图从这个名为“bigArray”的数组中删除重复项,同时保持数组的前三个位置不变(即使它们重复)。
我的问题是 for 循环内的 splice() 无法正常工作,因为每次拼接时,for 循环都会跳过数组的下一个位置(因为该位置比数组中低一个位置)。
如何让我的函数返回 [0,0,0,3,2]?
谢谢
var bigArray = [0,0,0,3,2,2,3,3,2];
function call() {
for (let i=3; i < (bigArray.length); i++) {
if (bigArray.indexOf(bigArray[i]) !== i) {
bigArray.splice(i,1);
}
}
console.log(bigArray);
return bigArray;
}
call();
最佳答案
您正在使用运行循环的 splice() 修改数组。您必须使用第二个数组来存储非重复值。你可以这样做:
var bigArray = [0,0,0,3,2,2,3,3,2];
var noDuplicates = bigArray.slice(0,3);
function call() {
for (let i=3; i < (bigArray.length); i++) {
if (bigArray.indexOf(bigArray[i]) === i) {
noDuplicates.push(bigArray[i]);
}
}
console.log(noDuplicates);
return noDuplicates;
}
call();
关于javascript - for 循环中的 splice(),解决方案是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44961259/