javascript - javascript 按值聚合并在数组中获取聚合结果
问题描述
data = [
{
"data": {
"data": [
{
"Id": "47",
"SepalLengthCm": "5.1",
"SepalWidthCm": "3.8",
"PetalLengthCm": "1.6",
"PetalWidthCm": "0.2",
"Species": "setosa"
},
{
"Id": "48",
"SepalLengthCm": "4.6",
"SepalWidthCm": "3.2",
"PetalLengthCm": "1.4",
"PetalWidthCm": "0.2",
"Species": "setosa"
}
]
},
"value": "PetalWidthCm",
"category": "Species",
"chart_type": "pie3d-chart",
"unique_datasource_token": "eyJmaWxlX2lkIjozLCJmaWxlX25hbWUiOiJpcmlzIGRhdGEiLCJmaWxlX3R5cGUiOiJjc3YiLCJjb21wYW55X2lkIjoxfQ=="
}, {
"data": {
"data": [
{
"Id": "47",
"SepalLengthCm": "5.1",
"SepalWidthCm": "3.8",
"PetalLengthCm": "1.6",
"PetalWidthCm": "0.2",
"Species": "setosa"
},
{
"Id": "48",
"SepalLengthCm": "4.6",
"SepalWidthCm": "3.2",
"PetalLengthCm": "1.4",
"PetalWidthCm": "0.2",
"Species": "setosa"
}
]
},
"value": "PetalWidthCm",
"category": "Species",
"chart_type": "bar-chart",
"unique_datasource_token": "eyJmaWxlX2lkIjozLCJmaWxlX25hbWUiOiJpcmlzIGRhdGEiLCJmaWxlX3R5cGUiOiJjc3YiLCJjb21wYW55X2lkIjoxfQ=="
}, {
"data": {
"data": [
{
"name": "carry",
"id": "5",
},
{
"name": "ethen",
"SepalLengthCm": "10"
}
]
},
"value": "PetalWidthCm",
"category": "Species",
"chart_type": "funnel-chart",
"unique_datasource_token": "eyJmaWxlX2lkIjozLCJmaWxlX25hbWUiOiJpcmlzIGRhdGEiLCJmaWxlX3R5cQ=="
}
]
output = [
{
"data": [
{
"Id": "47",
"SepalLengthCm": "5.1",
"SepalWidthCm": "3.8",
"PetalLengthCm": "1.6",
"PetalWidthCm": "0.2",
"Species": "setosa"
},
{
"Id": "48",
"SepalLengthCm": "4.6",
"SepalWidthCm": "3.2",
"PetalLengthCm": "1.4",
"PetalWidthCm": "0.2",
"Species": "setosa"
}
],
"value": "PetalWidthCm",
"category": "Species",
"chart_types": ["pie3d-chart","bar-chart"]
}, {
"data": {
"data": [
{
"name": "carry",
"id": "5",
},
{
"name": "ethen",
"SepalLengthCm": "10"
}
]
},
"value": "PetalWidthCm",
"category": "Species",
"chart_types": ["funnel-chart"]
}
]
嗨,我有以下数据结构,我想使用unique_datasource_token聚合chart_types ,并期望使用所有unique_datasource_token的数组中的 chart_types。
似乎数据结构很复杂,无法找到实现这一目标的方法
请帮助我以一种有效的方式来实现这一结果
解决方案
您可以使用Array.prototype.reduce()
和遍历您的数组。
- 创建一个
object
which 成立并给出group
=的值。unique_datasource_token
property name
unique_datasource_token
- 如果
property
不存在,则创建一个新的并复制data
,value
等。添加chart_types
为array
. 并推动电流值i.chart_type
。 - 如果
property
存在,则只需推送 current 的值i.chart_type
。 - 输出将是一个
object
所以将其转换为array
withObject.values
。
var data = [{
"data": {
"data": [{
"Id": "47",
"SepalLengthCm": "5.1",
"SepalWidthCm": "3.8",
"PetalLengthCm": "1.6",
"PetalWidthCm": "0.2",
"Species": "setosa"
},
{
"Id": "48",
"SepalLengthCm": "4.6",
"SepalWidthCm": "3.2",
"PetalLengthCm": "1.4",
"PetalWidthCm": "0.2",
"Species": "setosa"
}
]
},
"value": "PetalWidthCm",
"category": "Species",
"chart_type": "pie3d-chart",
"unique_datasource_token": "eyJmaWxlX2lkIjozLCJmaWxlX25hbWUiOiJpcmlzIGRhdGEiLCJmaWxlX3R5cGUiOiJjc3YiLCJjb21wYW55X2lkIjoxfQ=="
}, {
"data": {
"data": [{
"Id": "47",
"SepalLengthCm": "5.1",
"SepalWidthCm": "3.8",
"PetalLengthCm": "1.6",
"PetalWidthCm": "0.2",
"Species": "setosa"
},
{
"Id": "48",
"SepalLengthCm": "4.6",
"SepalWidthCm": "3.2",
"PetalLengthCm": "1.4",
"PetalWidthCm": "0.2",
"Species": "setosa"
}
]
},
"value": "PetalWidthCm",
"category": "Species",
"chart_type": "bar-chart",
"unique_datasource_token": "eyJmaWxlX2lkIjozLCJmaWxlX25hbWUiOiJpcmlzIGRhdGEiLCJmaWxlX3R5cGUiOiJjc3YiLCJjb21wYW55X2lkIjoxfQ=="
}, {
"data": {
"data": [{
"name": "carry",
"id": "5",
},
{
"name": "ethen",
"SepalLengthCm": "10"
}
]
},
"value": "PetalWidthCm",
"category": "Species",
"chart_type": "funnel-chart",
"unique_datasource_token": "eyJmaWxlX2lkIjozLCJmaWxlX25hbWUiOiJpcmlzIGRhdGEiLCJmaWxlX3R5cQ=="
}];
var r = data.reduce((a, i) => {
if (!a[i.unique_datasource_token]) {
a[i.unique_datasource_token] = {
data: i.data,
value: i.value,
category: i.category,
unique_datasource_token: i.unique_datasource_token,
chart_types: [i.chart_type]
};
} else {
a[i.unique_datasource_token].chart_types.push(i.chart_type);
}
return a;
}, {});
r = Object.values(r);
console.log(r);
推荐阅读
- php - Laravel刀片文件到word文档
- asp.net-mvc-5 - 如何解决:无法创建 mvc 项目
- html - 当他们得到一个新孩子时,内联块 div 的位置会变得混乱
- java - 离开应用程序时,SharedPreferences 必须被删除
- reactjs - React Router Auth 重定向有问题
- git - 如何使用 post-receive 脚本从服务器自动执行 git pull 命令
- python - “SyntaxError:无效语法”缺少什么?
- java - 使用 Android Studio 3.0.1 的库时无法合并 dex?
- javascript - 如何在贝宝结帐中添加更多金额
- javascript - 如何从firestore获取没有元数据的文档