使用这种方法依旧不可以解决问题const filtersList = this.shoppingCar.filter(item => item.numValue !== 0); this.shoppingCar=filtersList
时间: 2024-03-23 22:43:07 浏览: 62
解决vue.js this.$router.push无效的问题
5星 · 资源好评率100%
如果使用 `filter` 方法依旧不能解决问题,可能是因为在删除元素后,数组的下标发生了变化,导致了一些意外的结果。你可以尝试使用 `for` 循环逆序遍历数组,如下所示:
```javascript
for (var i = this.shoppingCar.length - 1; i >= 0; i--) {
if (this.shoppingCar[i].numValue == 0) {
this.shoppingCar.splice(i, 1);
}
}
```
这个代码使用 `for` 循环逆序遍历数组,从最后一个元素开始遍历,如果发现数量为0的商品,则使用 `splice` 方法删除该元素。由于是逆序遍历,因此删除元素后不会影响后面的元素,也就不需要更新数组下标了。
另外,还有一种方法可以避免数组下标发生变化的问题,就是使用 `Array.from` 方法将数组转换成一个新的数组,如下所示:
```javascript
this.shoppingCar = Array.from(this.shoppingCar).filter(item => item.numValue !== 0);
```
这个代码先使用 `Array.from` 方法将数组转换成一个新的数组,然后再使用 `filter` 方法过滤出数量不为0的商品,最后将过滤后的结果赋值给原数组。由于是使用新的数组,因此不会影响原数组的下标,也就不会出现意外的结果了。
阅读全文