У меня возникла небольшая проблема, которую пытались обуздать под ковром.
Я вызываю API, являющийся продуктом, у каждого продукта есть ключ categories
со значением массива. карт. Пытаясь классифицировать их по категориям.
Это мой пример ответа от API
[
{
"name": "Product one",
"categories": [
{
"id": 1,
"name": "Category One"
}
]
},
{
"name": "Product Two",
"categories": [
{
"id": 1,
"name": "Category One"
},
{
"id": 2,
"name": "Category two"
}
]
}
]
Код, который я написал ниже:
function groupBy(arr) {
let categories = [];
arr.forEach(el => {
el.categories.forEach(c => {
// Skapa ny kategori om inte redan existerar
if (!categories.includes(c.id)) {
categories.push({
name: c.name,
id: c.id,
products: [el]
});
} else {
// Lägg till produkt i existerande kategori
categories.forEach(_c => {
if (_c.id === c.id) {
_c.products.push(el)
}
})
}
});
});
return categories;
}
groupBy(arr);
Я думаю, что я Я как-то переусердствовал, желаемый результат, конечно, без каких-либо дублирующих категорий, продукты должны быть помещены в products[]
.