需要展示的效果如下图,可能是2~x个柱。后端返回的数据类似:
{
old:[
{name:"1",value:1},{name:"2",value:2},{name:"3",value:3}
],
new:[
{name:"1",value:1},{name:"3",value:3}
]
}
可以看到 new数据里面缺少了{name:"2"},如果简单得循环遍历取值填充到ecahrt的话,那么name:"3"
的值会显示在x轴刻度为2的地方,3的地方反而没有值了,按理说x轴刻度为2的地方,第二根柱子应该是0。
前端处理思路如下:JS
1.先将old new 数据里X轴都取出来拼接,然后去重,暂定为Arr;
2.命名一个新的数组对象,用Arr 去遍历生成 俩这样的数组 [{name:arr[index] ,value:0}......],暂命名AARR BARR;
3.用AARR套原始数据old双层遍历,如果old中有name和AARR中name相同的,AARR.item.value=old.value,否则不处理 还是0;得到完整的,补0以后的AARR
4.同理:用BARR套原始数据new双层遍历,如果new中有name和BARR中name相同的,BARR.item.value=new.value,否则不处理 还是0;得到完整的,补0以后的BARR;
5.再去处理AARR BARR 生成echart 所需要的数据。
目前能想出来的最笨的办法,有大神有好方法欢迎交流。最后贴一下代码怕自己忘了