我使用Angular作为我的框架。我有一个函数,只要数组发生变异就会被调用。我需要在每次调用此函数时检查数组以查看它是否有重复项,如果是,我需要编辑原始项并从数组中删除最后一项。
我正在建造一个购物车。所以当一个重复项添加到数组时,我需要更改原始项中的数量值并删除最后一个推送的项。
组件功能:
ngDoCheck() {
var changes = this.differ.diff(this.shoppingCart); // check for changes
if (changes) {
clearTimeout(this.timer);
this.cartOpen = true;
this.itemsInCart = this.numberOfItemsinCart(this.shoppingCart);
this.cartTotal = this.totalCartAmount(this.shoppingCart);
//check if this.shoppingCart has a duplicate item
//if array does have a duplicate
//change qty value in original item and
//remove the last item added
}
}
我的对象数组示例:
{
"id": 6,
"product_name": "name of product",
"sku": "26-008b",
"description": "description of product",
"product_link": "link",
"cat_id": "categoryId",
"cat_name": "Category name",
"related_products": [],
"sub_cat_name": "sub category name",
"price": price,
"qty": 1
}
由于我没有想法或者长时间盯着这段代码,所以非常感谢你的帮助。
答案 0 :(得分:1)
您可以使用关于数组Array.indexOf(item)
和Array.prototype.lastIndexOf(item)
if(Array.indexOf(item) == Array.prototype.lastIndexOf(item)) {
// change value in position given by indexOf
// delete last index
}
答案 1 :(得分:1)
在添加项目之后,您需要检查重复的项目,而不是删除项目,
您可以使用.filter
检查重复的项目var duplicates = this.shoppingCart.filter(this.product_name ==='yourSampleName');
if(duplicates && duplicates.length > 0){
//add items here
this.shoppingCart.push(whatever);
}