最近在写echarts的过程中, 遇到后端返回的数据, 格式类似于以上, 渲染成折线图, 这种数据格式不太符合echarts折线图所需的数据格式, 把返回的数据按照baseYear, 再按照baseName 进行双重排序, 对缺失的部分后端不返回, 只能我们自己写方法补全了.
let baseYear = [2015, 2016, 2017, 2018, 2019],
baseName = ['空军', '海军', '陆军', '火箭军'],
arrList = [
{ year: 2015, unitsName: '空军', value: 20 },
{ year: 2015, unitsName: '火箭军', value: 20 },
{ year: 2016, unitsName: '空军', value: 20 },
{ year: 2016, unitsName: '海军', value: 20 },
{ year: 2016, unitsName: '陆军', value: 20 },
{ year: 2016, unitsName: '火箭军', value: 20 },
{ year: 2017, unitsName: '空军', value: 20 },
{ year: 2017, unitsName: '海军', value: 20 },
{ year: 2018, unitsName: '空军', value: 20 },
{ year: 2018, unitsName: '陆军', value: 20 },
{ year: 2019, unitsName: '火箭军', value: 20 },
],
arrContent = [] // 最终需要的数据
for (var i = 0; i < baseYear.length; i++) { // 以年份为基础
let data = []
let yearGroup = arrList.filter((item) => {
return item.year == baseYear[i] // 把每一个年份相同的取出来放到一个数组
})
for (var j = 0; j < baseName.length; j++) { // 对同年数组进行校验
if (!(yearGroup[j] && yearGroup[j].unitsName === baseName[j])) { // 校验同年数组在对应index是否有baseName
yearGroup.splice(j, 0, { year: baseYear[i], unitsName: baseName[j], value: 0 })
}
}
arrContent.push(yearGroup)
}
console.log(arrContent)
最后返回如上数据格式