js数组,在遍历中删除元素(用 for (var i in arr)是无效的 )
1 /** 2 * 有效的方式 - 改变下标,控制遍历 3 */ 4 for (var i = 0; i < arr.length; i++) { 5 if (...) { 6 arr.splice(i, 1); // 将使后面的元素依次前移,数组长度减1 7 i--; // 如果不减,将漏掉一个元素 8 } 9 } 10 11 /** 12 * 无效的方式 - for .. in 无法控制遍历 13 */ 14 for (var i in arr) { 15 if (...) { 16 arr.splice(i, 1); // 将使后面的元素依次前移,数组长度减1 17 i--; // 没有效果,怎么都会漏掉一个元素 18 } 19 }
你的坚持 ------ 终将美好 ~