【发布时间】:2020-04-04 19:47:07
【问题描述】:
我一直有这个小问题,试图在地毯下扫除。
我正在调用一个产品 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[]。
【问题讨论】:
-
预期的 json 结果是什么?
-
您想根据类别对产品进行分组吗?
标签: javascript arrays underscore.js lodash