例如:我要删除一个数组中的偶数
给出以下代码
var nums = [2, 2, 4, 7, 3, 8]
for (var i = 0
if (nums[i] % 2 === 0) {
nums.splice(i, 1)
}
}
console.log(nums)
/* 存在bug原因:
第一次循环:
数组:2, 2, 4, 7, 3, 8
索引:0 1 2 3 4 5
解释:第一个数组2显然是偶数,删掉之后,数组变为2, 4, 7, 3, 8
第二次循环:
数组:2, 4, 7, 3, 8
索引:0 1 2 3 4
解释:这一次循环,就是从索引1开始遍历,直接跳过了索引0位置处的数字2
*/
// 解决方案1:知道原因过后,每次删掉过后,把i减1
/* var nums = [2, 2, 4, 7, 3, 8]
for (var i = 0
if (nums[i] % 2 === 0) {
nums.splice(i, 1)
i--
}
}
console.log(nums)
// 解决方案2:倒着遍历数组,从数组的最后一位数字开始删
var nums = [2, 2, 4, 7, 3, 8]
for (var i = nums.length - 1
if (nums[i] % 2 === 0) {
nums.splice(i, 1)
}
}
console.log(nums)