array.splice忽略其中一个元素



我正试图删除数组nums中的所有,但由于某些原因,splice((方法忽略了其中一个零。你能告诉我原因是什么吗?

var deleteZeroes = function(nums) {

for(var i=0 ; i<nums.length ; i++)
{
if(nums[i]===0)
{
nums.splice(i,1)

}
}

return nums
};
deleteZeroes([0,0,4,0,3])

如果你不想创建一个新的数组,并且想在同一个数组中删除,那么另一种使其工作的方法是从末尾反向迭代,就像一样

(var i=nums.length-1 ; i>=0 ; i--) { 
//same code you have...
} 

可以使用filter()方法执行任务

示例:1

var deleteZeroes = function(nums) {
var n = nums.filter(x => x !== 0);
return n
};
console.log(deleteZeroes([0,0,4,0,3]));

示例:2 (简短语法(

var deleteZeroes = (nums) => (nums.filter(x => x));
console.log(deleteZeroes([0,0,4,0,3]));

相关内容

最新更新