最近在运用echarts来渲染表格,每一次与对接都有不同的感悟,这不,新的难题来了,将返回的数据整合成柱状图的一组serises 里用来渲染图表
简化下来的数组:
var oriArr = [
{"fruit":"苹果","shop":"A商场","num":1},
{"fruit":"苹果","shop":"A商场","num":1},
{"fruit":"梨","shop":"A商场","num":1},
{"fruit":"梨","shop":"B商场","num":2},
{"fruit":"苹果","shop":"B商场","num":1},
]
var targetArr = [
{
"苹果":{
"A商场":1,
"B商场":1,
},
"梨":{
"A商场":1,
"B商场":1,
},
}
]
var series = [
{
name:"水果的种类",
data:["1","2","3"]
}
]
var fruitObj = {}
oriArr.forEach(item => {
if(fruitObj[item.fruit] == undefined){
var shopObj = {}
shopObj[item.shop] = item.num
fruitObj[item.fruit] = shopObj
}else{
var shopObj = fruitObj[item.fruit]
if(shopObj[item.shop] == undefined){
shopObj[item.shop] = item.num
fruitObj[item.fruit] = shopObj
}else{
shopObj[item.shop] += item.num
fruitObj[item.fruit] = shopObj
}
}
})
console.log(fruitObj)//
// fruitObj = {
// 梨: { A商场: 1, B商场: 2 },
// 苹果: { A商场: 2, B商场: 1 }
// }
var series = []
for(var key in fruitObj){
var serie = {}
var obj = fruitObj[key]
var data = []
for (var k in obj) {
data.push(obj[k])
}
serie["name"] = key
serie["data"] = data
series.push(serie)
}
console.log(series)