用for循环或者forEach遍历数组的话,在方法体内部splice都得不到正确的结果。有什么好的办法解决这个问题吗?var arr=[2,3,5,7];
arr.forEach(function(item,idx){
if(item===5){
arr.splice(idx,1);
}
})
1 回答
喵喵时光机
TA贡献1846条经验 获得超7个赞
方法一,用 filter
var arr = [2, 3, 5, 7]; arr = arr.filter(item => item !== 5);
方法二,用逆向循环
var arr = [2, 3, 5, 7];for (let i = arr.length - 1; i >= 0; i--) { if (arr[i] === 5) { arr.splice(i, 1); } }
forEach
不是什么时候都适用的,如果不改变原数组,用 map
比较合适,如果要直接改变原数组,用 for
比较合适。
添加回答
举报
0/150
提交
取消