【JS实战】数组方法使用的常见问题记录

foreach循环中使用splice问题

  • 场景:循环数组并删除不满足条件的数据。
  • 问题:在foreach中使用splice(会改变原数组),会导致数组的index乱序,出现错误。
  • 解决方法(之一):使用filter来代替实现相关功能。
  • 例子:
let arr = [
      {
        productId: 1,
        productName: '电视机',
        num: 20
      }, {
        productId: 2,
        productName: '洗衣机',
        num: 0
      }, {
        productId: 3,
        productName: '冰箱',
        num: 50
      }, 
    ]
    arr = arr.filter(item => {
      return item.num != 0
    })
    console.log(arr) 
    // [
    // {productId: 1, productName: "电视机", num: 20}, 
    // {productId: 3, productName: "冰箱", num: 50}
    // ]

  • 使用map、forEach等链式调用的方式遍历数组集合时,不要在循环体中移除数组集合的成员(不要减少数组的长度),否则数组的指针会指向错误!
    参考:js关于foreach循环中使用splice问题

你可能感兴趣的:(javascript)