Angular 2从数组中删除重复值

时间:2017-09-07 03:16:12

标签: javascript arrays angular

我有一个对象数组,想要删除重复项

enter image description here

在图像中,我希望删除所有重复的值并仅获取单个值,并且对于重复项,会增加数量。

2 个答案:

答案 0 :(得分:0)

您似乎正在实施如何在购物车中添加商品。我假设你有一个产品类或类似名称来创建你的对象。

export class Product {
  constructor(
    public name: string, public amount: number, quantity: number, productId: string){} 
}

我建议你实施另一个课程,比如购物车。

export class Cart {
    constructor(
        public product: Product, public quantity: number) {}
}

在你的service.ts中,

carts: Cart[];

addToCart(product: Product) {
    for (let i = 0; i < this.carts.length; i++) {
        if(this.carts[i].product.productId == product.productId) {
            this.carts[i].quantity = this.carts[i].quantity + 1;
            return;
        }// this code here to avoid duplicates and increase qty.
    }

    let cart = new Cart(product, 1);
    this.carts.push(cart);
}

购物车中应该有3个不同的商品,cs(3),dota(1),nfs(1)。在我的购物车中,当您点击我的产品组件中的产品时,每个商品只会添加1个商品。

for(let i=0; i<products.length; i++){
  this.addToCart(products[i]);
}

此代码如下所示

enter image description here

答案 1 :(得分:-1)

假设arr是要从中删除重复的数组,这里有一个简单的代码可以删除重复的数据;

arr = Array.from(new Set(arr.map(x => {
  let obj;
  try {
    obj = JSON.stringify(x);
  } catch (e) {
    obj = x;
  }
  return obj;
}))).map(x => {
  let obj;
  try {
    obj = JSON.parse(x);
  } catch (e) {
    obj = x;
  }
  return obj;
});

现在,arr没有重复项。