移除数组中的元素
// 具有收集删除信息列表的代码,算是题解之一
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循环来解决问题,就不过多赘述了。
测试题目原网址:移除数组中的元素 ,欢迎讨论

京公网安备 11010502036488号