数据是模拟的,当点击编辑的时候,我想删除选中的元素,就是如果选中一个的情况下,就删除一个,选中多个的情况下,就删除多个,这样
每个数组里的元素,默认有个 checked 属性
演示地址
html结构
全部商品
![]()
{{ shopping.title }}
¥{{ shopping.money }}
x{{ shopping.shoppingnum }}
js代码
var vm = new Vue({
el : ".t-root",
data : {
showtext : true,
shoppingList : [
{
id : 11,
title : '贡牌茶叶西湖春茶正宗雨前龙井茶礼盒装礼盒装160g礼盒装',
money : 48,
imgsrc : 'images/download-order-img-11@2x.png',
shoppingnum : 1,
checked : true
},
{
id : 22,
title : '贡牌茶叶西湖春茶正宗雨前龙井茶礼盒装礼盒装160g礼盒装',
money : 98,
imgsrc : 'images/download-order-img-11@2x.png',
shoppingnum : 1,
checked : true
},
{
id : 33,
title : '贡牌茶叶西湖春茶正宗雨前龙井茶礼盒装礼盒装160g礼盒装',
money : 148,
imgsrc : 'images/download-order-img-11@2x.png',
shoppingnum : 1,
checked : true
}
]
},
computed : {
},
methods : {
editorShopping : function(){
this.showtext = !this.showtext;
},
removeShopping : function(){
var that = this;
that.shoppingList.forEach(function(value,index){
//只有为true时才删除
if (value.checked) {
that.shoppingList.splice(index,1);
// console.log(index);
}
});
},
add : function(index){
var shopping = this.shoppingList[index];
if (shopping.shoppingnum == 100) {
return false;
}else {
shopping.shoppingnum ++;
}
},
reduce : function(index){
var shopping = this.shoppingList[index];
if (shopping.shoppingnum == 1){
return false;
}else {
shopping.shoppingnum --;
}
}
}
});
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
JS中删除批量删除数组元素时应该倒序删除(意思是先删除索引大的元素,再删除索引小的元素),
因为在删除的过程中数组的索引会变化,如果先删除了小的元素,后面元素的索引都会变化.
我写了个简单的demo:
换个思路,别删除,过滤更简单直观。
已经解决了!
参考地址
用逆向循环