I have an array products that needs to be grouped by Product._shop_id.
export class Product {
_id: string;
_shop_id: string;
}
export class Variant { variant_id: string; }
export interface ShoppingCart {
Variant: Variant;
Product: Product;
quantity: number;
totalPrice: number;
}
export class CartComponent implements OnInit {
products: ShoppingCart[] = [];
ngOnInit(){
this.products = [
{Variant: {variant_id: '1'}, Product: {_id: '1', _shop_id:'1'}, quantity: 5, totalPrice: 600},
{Variant: {variant_id: '2'}, Product: {_id: '2', _shop_id:'2'}, quantity: 4, totalPrice: 500},
{Variant: {variant_id: '5'}, Product: {_id: '3', _shop_id:'2'}, quantity: 3, totalPrice: 400}
]
}
someMethod(){
const productsByShop = this.utils.groupBy(this.products, key);
}
}
Here is the method to achieve this. But I need the Object Key to make it work.
export class Utils {
constructor() { }
groupBy(list, key) {
const map = new Map();
list.forEach((item) => {
const collection = map.get(key);
if (!collection) {
map.set(key, [item]);
} else {
collection.push(item);
}
});
return Array.from(map)[0][1];
}
}
I'm trying to get different arrays grouped by _shop_id from products array.
Like this:
array1: [ {Variant: {variant_id: '1'}, Product: {_id: '1', _shop_id:'1'}, quantity: 5, totalPrice: 600} ]`
array2: [ {Variant: {variant_id: '2'}, Product: {_id: '2', _shop_id:'2'}, quantity: 4, totalPrice: 500},
{Variant: {variant_id: '5'}, Product: {_id: '3', _shop_id:'2'}, quantity: 3, totalPrice: 400} ]`