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

在JavaScript中,当使用foreach循环遍历并试图删除不满足条件的数组元素时,由于splice会改变原数组导致索引错乱。文章提出使用filter方法作为替代方案,例如过滤掉num不等于0的对象。filter不会影响原始数组,能保持遍历顺序。因此,应避免在循环体中减少数组长度以防止指针错误。
摘要由CSDN通过智能技术生成

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问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值