根据对象数组中某个相同的属性,将相同属性对象合并为一个对象,从而得到新的数组
let arr = [
{
timestamp: 1597593600000,
total: 1892,
'合川区': 1
},
{
timestamp: 1597593600000,
total: 1892,
'长沙市': 13
},
{
timestamp: 1597593600000,
total: 1892,
'常德市': 14
},
{
timestamp: 1597680000000,
total: 1892,
'合川区': 1
},
{
timestamp: 1597680000000,
total: 1892,
'长沙市': 10
}
];
根据相同的timestamp,将对象合并,得到这样的格式:
let arr = [
{
timestamp: 1597593600000,
total: 1892,
'合川区': 1,
'长沙市': 13,
'常德市': 14
},
{
timestamp: 1597680000000,
total: 1892,
'合川区': 1,
'长沙市': 10
}
];
上代码:
let endList = [];
_.values(_.groupBy(arr, 'timestamp')).forEach((itemList) => {
let data = {};
itemList.forEach(d => {
data = Object.assign(data, d);
});
return endList.push(data);
});
console.log(endList);
打印出来就是所需格式,其中用的大多是Lodash里面的方法实现,
Lodash官网地址
Lodash 使用
npm i --save lodash
main.js
import _ from 'lodash'
Vue.prototype._ = _