删除数组指定元素
1、间接应用
/*# 删除下标为5的元素 #*/var arr = [1,1,1,2,2,2,3,3,3]arr.splice(5,1)console.log(arr);// 后果 [1, 1, 1, 2, 2, 3, 3, 3 ]
2、在forEach中应用
/*# 删除指定的元素 forEach遍历 #*/var arr = [1,1,1,2,2,2,3,3,3];var val = 1;arr.forEach((it,i,arr) => { if (it == val) { arr.splice(i,1); i-=1; }}) console.log(arr);// 后果 [1, 2, 2, 2, 3, 3, 3]
我发现这个须要删除的元素1并没有被删除洁净,而是留了一个,我调整一下数据再试试
在我扭转arr数据之后var arr = [1,1,1,2,2,2,1,1,3,3,1,3];// 后果 [1, 2, 2, 2, 1, 3, 3, 3]
只有存在间断的须要被删除的元素,就会保留一个
3、在for循环中应用
/*# 删除指定的元素 for遍历 #*/var arr = [1,1,1,2,2,2,1,1,3,3,1,3];var val = 1;for (let i = 0; i < arr.length; i++) { const it = arr[i]; if (it == val) { arr.splice(i,1); i-=1 }}console.log(arr);// 后果 [ 2, 2, 2, 3, 3, 3 ]
用for循环遍历就能够将须要删除的元素删的干干净净
小结
forEach: forEach在遍历时简洁明了,应用起来也十分不便,然而限度也很多。
- forEach不能应用break跳出循环
- forEach只能默认从索引0开始
- forEach底层管制index自增,无奈人为管制
所以在forEach遍历删除时就会有删不洁净的bug存在,遇到简单的数组操作时尽量应用for循环,免得遇到奇奇怪怪的bug.
当然因为数组办法繁多,并没有相对的好与不好,适合的办法才是最好的。