使用数组存在localstorage中,购物车中取消商品时,取消第一个商品后如果后面有第二个商品且第二个商品数量为1个,则第二个商品数量也为0了,使用了var toBeDeleted = []; for (var i = 0; i < this.shoppingCar.length; i++) { if (this.shoppingCar[i].numValue == 0) { toBeDeleted.push(i); } } for (var i = toBeDeleted.length - 1; i >= 0; i--) { this.shoppingCar.splice(toBeDeleted[i], 1); }依旧不能解决问题
时间: 2024-03-23 12:43:03 浏览: 49
在localStorage中存储对象数组并读取的方法
5星 · 资源好评率100%
这个问题的原因可能是在删除第一个商品后,对于第二个商品的数量为1的情况没有正确处理。你可以尝试修改代码,如下所示:
```javascript
var toBeDeleted = [];
for (var i = 0; i < this.shoppingCar.length; i++) {
if (this.shoppingCar[i].numValue == 0) {
toBeDeleted.push(i);
}
}
for (var i = toBeDeleted.length - 1; i >= 0; i--) {
this.shoppingCar.splice(toBeDeleted[i], 1);
}
// 处理数量为1的商品
for (var i = 0; i < this.shoppingCar.length; i++) {
if (this.shoppingCar[i].numValue == 1) {
// 将数量为1的商品的数量设置为0
this.shoppingCar[i].numValue = 0;
// 将该商品添加到待删除列表中
toBeDeleted.push(i);
}
}
// 删除待删除的商品
for (var i = toBeDeleted.length - 1; i >= 0; i--) {
this.shoppingCar.splice(toBeDeleted[i], 1);
}
```
这个修改后的代码,先删除数量为0的商品,然后再遍历一遍数组,找到数量为1的商品,将其数量设置为0,并将其添加到待删除列表中,最后再删除待删除的商品。这样就可以正确处理数量为1的商品了。
阅读全文