【发布时间】:2021-07-10 09:40:21
【问题描述】:
我已经找到了使用以下代码按类别对对象进行分组的方法:
let groupBy = (element, key) => {
return element.reduce((value, x) => {
(value[x[key]] = value[x[key]] || []).push(x);
return value;
}, {});
};
let items = groupBy(results, 'category')
而且,结果会是这样的:
{
"Administration": [
{
"shp_name": "Village Boundary",
"color_prop": "#000000",
"shp_prop": "Batu Ampar"
},
{
"shp_name": "Village Boundary",
"color_prop": "#FFFFFF",
"shp_prop": "Sungai Jawi"
}
],
"Land_use": [
{
"shp_name": "Land Use 2019",
"color_prop": "#000000",
"shp_prop": "Grassland"
},
]
}
我想通过将color_prop 和shp_prop 合并到对象内的数组中来再次对它们进行分组,如下所示:
{
"Administration": [
{
"shp_name": "Village Boundary",
"color_prop": ["#000000","#FFFFFF"],
"shp_prop": ["Batu Ampar","Sungai Jawi"]
},
],
"Land_use": [
{
"shp_name": "Land Use 2019",
"color_prop": ["#000000"],
"shp_prop": ["Grassland"]
},
]
}
如果有人能帮助我解决这个问题,我真的很感激。谢谢。
【问题讨论】:
-
组中所有项目的
shp_name是否相同?您按category分组,这意味着只有一个项目的category属性保证相同。理论上,组内的项目可能有不同的shp_names。 -
嗨,
shp_name应该是唯一的,但它在循环过程中按照color_prop长度重复。这就是为什么我正在寻找解决方案来避免这种情况。顺便说一句,我加入了 3 个 MySQL 表,它们分别是类别、shapefile 和样式。类别由 shapefile 组成,每个 shapefile 都有一些属性和颜色。
标签: javascript arrays json object