function searchDelArr(arr, arr2) { //数组匹配是否存在,删除元素(返回arr数组)
if (arr) {
for (var i = arr.length-1; i >= 0; i--) {
for (var item of arr2) {
if (arr[i].posttime == item) {
arr.splice(i, 1)
}
}
}
return arr
} else {
return arr
}
}
请问上面的splice,如何每次删除了一个数组之后就从头开始循环(如果不从0开始循环则删除一个之后数组下的index就会超出范围),不然一直提示这个问题
searchDelArr(arr, arr2) { if (arr) { for (let item of arr2) { for (let i = 0; i < arr.length; ++i) { if (arr[i].posttime == item) { arr.splice(i, 1); --i; } } } return arr } else { return arr } }
我感觉如果符合if删除后就可以break了?
删除继续走里面的循环和break到外层继续好像没什么差别,arr[i]实际已经指向下一个元素了,但如果第一个元素就符合删除的话继续走内层会拿到undefined,因为i并没有变但length变了。
第二个for循环下判断arr[i]还存在不,不存在就可以跳过进入下一个·循环了