移除数组中的元素
// 具有收集删除信息列表的代码,算是题解之一 function removeWithoutCopy(arr, item) { var array = [] for (var i = 0;i < arr.length;i++) { if (arr[i] === item) { array.push(i) //arr要删除的项被收集 } } for (var j in array) { arr.splice(array[j]-j,1) } return arr // return array //在正向遍历时,考虑位置影响 }
非得要正向遍历删除的方法:
function removeWithoutCopy(arr, item) { for (var i = 0;i < arr.length;i++) { if (arr[i] === item) { arr.splice(i,1) i-- //删除后使得遍历不会缺少项,同时不用考虑位置变化了 } } return arr }
此外还可以使用逆向检索的方法,代码如下:
function removeWithoutCopy(arr,item) { for (var i = arr.length-1;i >= 0;i--) { if (arr[i] === item) { arr.splice(i,1) // console.log("删除了第"+i+"项") } } return arr }
此外,在浏览其他coder的代码时,还可以有while循环来解决问题,就不过多赘述了。
测试题目原网址:移除数组中的元素 ,欢迎讨论