如何在forEach 中使用 splice

2018-09-19  本文已影响0人  webmrxu

splice 操作会直接改变数组,导致数组 length 改变, 使用forEach 循环数组并splice数组后,index下标指向错误,导致数组数据混乱。

例如:我需要删除数组中第3 个和第 4 个元素,直接使用splice 删除指定位置元素,但结果确是删除了其他元素,删除了 3 和 5。


1537321270(1).jpg

思考1: 经历过splice 后,length 越来越小, 整个数组元素左移动,index下标对应的元素也相应的左移动,导致使用index定位元素不准确。如果采用 index倒序的方式进行splice操作,会不会能解决index定位元素不准确的问题。

解决代码1:

let a = [0,1,2,3,4,5,6,7,8,9];
let tmpArr = []
a.forEach((v,index) => {
  if (index == 3) {
    tmpArr.unshift(index)
  }
  if (index == 4) {
    tmpArr.unshift(index)
  }
})
tmpArr.forEach( v =>{
  a.splice(v, 1)
})
console.log(a)
1537321723(1).jpg
上一篇下一篇

猜你喜欢

热点阅读