function removeWithoutCopy(arr, item) { // 需要在给定的原数组上进行操作,filter是返回一个新数组 // 使用for循环,然后用splice (找到一个删一个,要不然会影响index的值) var index for(let i=0; i<arr.length; i++){ index = arr.indexOf(item) if(index!==-1){ arr.splice(index,1) } } return arr }
题目要求让我们在原数组中实现删除操作,所以我们不用filter和map。
1.在forEach中使用实参index的话进行删除操作的话,前一个的删除会影响整个数组的索引发生改变,所以我们使用for来操作。
2.循环arr.length次可以避免遗漏。
3.每次循环迭代时先找item在arr中的索引,如果找到则返回具体索引,没有找到则返回-1。
4.然后我们就可以进行判断,如果找到的话直接删除就行了。