怎么删除特定的数组对象

    data = {
    "bets": [
     {
        "price": 0,
        "good": "iphone 6",
      },
      {
        "price": 109,
        "good": "iphone 7",
      },
      {
        "price": 0,
        "good": "iphone 8",
      },
      {
        "price": 0,
        "good": "iphone X",
      },
      {
        "price": 199,
        "good": "iphone XR",
      },
      {
        "price": 0,
        "good": "iphone XS",
      }
    ]
}

js

let betsData = data.bets
        betsData.forEach(function (item, idx) {
        if(item.price === 0){
              betsData.splice(idx, 1)
           }
    });

console
clipboard.png

目标是要把price是0的删掉

所以我对data跑一个循环,找出是0的 然后通过splice去删除

看起来很合理 但结果却不如预期

该怎么修正?

阅读 3.4k
2 个回答

filter方法
array.filter(item => item.price !== 0)

forEach的时候,变量idx的值是定下来的,但是你在回调函数中使用了splice操作,会改变数组的个数,那么idx就和原数组的下标对应不上了。正确做法是声明一个新的obj变量,满足要求的push进去。

而且你这个方案不好,参考@ntnyq 的filter操作

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题