最先开始犯了一个很低级的错误,就是忽略了采用splice方法之后arr的长度也是会发生变化的,但是循环变量i是有规律的递增的,所以最后采用递归的方法 function removeWithoutCopy(arr, item) { let i = arr.indexOf(item) if(i == -1) return arr if (item == arr[i]){ arr.splice(i,1) } return removeWithoutCopy(arr, item) }