javascript - 如何基于相同的值合并对象数组?
问题描述
我有这个对象数组:
var array = [{
country: "Austria",
name: "2019-01-04T23:00:00.000Z",
value: "1"
},
{
country: "Austria",
name: "2019-01-11T23:00:00.000Z",
value: "3"
},
{
country: "Austria",
name: "2019-01-18T23:00:00.000Z",
value: "1"
}
]
我想操纵它来实现这个结果:
var array = [{
country: "Austria",
series: [{
name: "2019-01-04T23:00:00.000Z",
value: "1"
},
{
name: "2019-01-11T23:00:00.000Z",
value: "3"
},
{
name: "2019-01-18T23:00:00.000Z",
value: "1"
}
]
}]
我读了很多问题,但没有一个对我有帮助。
解决方案
这应该这样做:
var map = {};
for(var entity of array) {
if(!map[entity.country]) {
map[entity.country] = {
country: entity.country,
series: [
{
name: entity.name,
value: entity.value
}
]
};
}
else {
map[entity.country].series.push({
name: entity.name,
value: entity.value
});
}
}
var mappedArray = Object.values(map);
推荐阅读
- amazon-web-services - 我是否需要静态 s3 网站的 aws 代码管道中的代码部署步骤
- java - 我该如何改进这个计算器(Bluej)?
- ruby-on-rails - Capistrano + puma + nginx:Capistrano puma 没有创建 puma-sockets 和 puma id
- python - NumPy 的 free-function-reshape() 与 member-function-reshape() 的实现?
- spring-boot - 如何从另一个模块导入安全配置类
- java - 正则表达式:匹配其他正则表达式留下的所有内容
- airflow - 气流:Bash Operator 没有给出结果
- python - 我需要什么语法来选择数据框中的单个行?
- excel - 防止记录重复记录的 VBA 脚本
- excel - 如何查找从今天起 14 天后的趋势/预测结果