I am having an array of objects and want to remove duplicates
Like in the image i want to remove all duplicate values and get only single values and for the duplicates increase the quantity.
I am having an array of objects and want to remove duplicates
Like in the image i want to remove all duplicate values and get only single values and for the duplicates increase the quantity.
It seems like you are implementing how to add items in your cart. I assume you have a product class or similar name to create your objects.
export class Product {
constructor(
public name: string, public amount: number, quantity: number, productId: string){}
}
I suggest you implement another class, say cart.
export class Cart {
constructor(
public product: Product, public quantity: number) {}
}
In your 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);
}
You should have 3 different items in your cart, cs(3), dota(1), nfs(1). In my shopping cart, only 1 per item is added to cart, when you click on the product in my products component.
for(let i=0; i<products.length; i++){
this.addToCart(products[i]);
}
This code works as show below
Assuming arr
is the array you want to remove duplicated from, here is a simple code to remove duplicated from it;
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;
});
Now, arr
has no duplicates.