J'ai ce tableau

Products = [
0 : {category_Id : 12 , ProductId : 11, Product name : "Salwar"}
1 : {category_Id : 12 , ProductId : 12, Product name : "Saree"}
2 : {category_Id : 12 , ProductId : 13, Product name : "Dress"}
3 : {category_Id : 13 , ProductId : 14, Product name : "Sandals"}
4 : {category_Id : 13 , ProductId : 15, Product name : "Wedges"}]

J'essaie de lier des produits avec le même identifiant de catégorie dans un seul index de tableau pour par exemple:

 category[12] : [{ProductId : 11, Product name : "Salwar"},{ProductId : 12, Product name : "Saree"},{ProductId : 13, Product name : "Dress"}] 

 category[13] : [{ProductId : 14, Product name : "Sandals"},{ProductId : 15, Product name : "Wedges"}]

Si je veux imprimer des produits avec la catégorie Id 13, les sandales et les compensées doivent être imprimées. Des idées pour obtenir ce résultat?

0
Anjana 18 oct. 2020 à 10:28

2 réponses

Meilleure réponse

Vous pouvez utiliser Array.filter pour cela:

products = [
  {category_Id : 12 , ProductId : 11, Product_name : "Salwar"},
  {category_Id : 12 , ProductId : 12, Product_name : "Saree"},
  {category_Id : 12 , ProductId : 13, Product_name : "Dress"},
  {category_Id : 13 , ProductId : 14, Product_name : "Sandals"},
  {category_Id : 13 , ProductId : 15, Product_name : "Wedges"}
];

getCategory(id){
  return products.filter(p=>p.category_Id==id);
}

console.log(getCategory(12));
console.log('*************');
console.log(getCategory(13));
1
Asaf 18 oct. 2020 à 09:21

Filtrez d'abord les identités égales, puis mappez chaque élément pour obtenir le résultat souhaité

const category = (Products || [])
    .filter(product => product.ProductId === product.category_Id)
    .map(product => ({ ProductId: product.ProductId, "Product name": product["Product name"] }))
1
cagcak 18 oct. 2020 à 08:56