观echat的一个例子后有感

518 阅读3分钟

副标题:我仅仅是想表达一点js上的技巧,不是讲echat,echat,chat!!!

先上一个图,这是个柱状图,首先第一个柱子表达的是总的费用,而它后面的则是零零碎碎的开销细节,这个图不仅有表达了开销细节,还很直观的告诉我们每个开销细节所占的比例,达到了一个饼图的效果,对于咱们这种喜欢简洁代码的淫,自然也很喜欢这种简洁明了的图啦。

当然,我们今天的重点并不是这个图好不好看,而是要研究研究这个图是怎么计算出来的。在echart中要用户做的是其实少之又少,除了必要的配置,剩下的就是计算了。

聪明的您(我虽然不是北方人,但我一样很客气)肯定发现了我在图上面圈的红圈,这也是我们必须要传进去的数据,这样echart才能根据数据渲染相应的效果。聪明的您可能又会发现,两个红圈里面的数组对应的是两个bar,也就是echart中柱状图的类型,只是第一个红圈的数组所对应的bar的所有颜色都设为了透明,这才形成了上图中的效果。

嗯,两个数组肯定有对应关系,那又是怎么算出来的呢

先把两个数组亮出来:

[0, 1700, 1400, 1200, 300, 0]

[2900, 1200, 300, 200, 900, 300]

细细观察后,我们可以发现,2900-1200=1700,2900-1200-300=1400,诶!有了上面的数组就是下面的数组依次递减对应得到的!

好了,分析完上面的大前提,我们就可以写一写代码了

啊哈哈哈,一口气写十几行代码,不费劲!!

这当然必须是正确的代码

但是。。。

这样的代码发出去,肯定会被笑死的。搞不好还会有一两个大V过来骂(当然介系不可能的,毕竟大V都很忙的,我们要体谅他们)总之这样是唔得嘎!于是我又乒呤乓啷的敲打起来。。。

噔噔噔噔!!

什么?!这也叫改良过?!WTF是在逗我吗?!对,我就是在逗你!(开个玩笑)应该是这样才对:

是不是觉得简洁那么一点呢!啊哈哈哈

其实我早就看length不顺眼了,于是乎。。。

乒铃乓啷。。。出来吧,光能使者!!

我们又见面了,大地!!

恩,是的,精彩的分析已经接近尾声,相信广大的观众依然意犹未尽!(😂我也不知道哪来的自信)可能也有很多朋友不太明白我在表达什么,下面总结一下:

  1. 我是在告诉大家,echart是要自己传数据的;(什么?!这个你们都知道?!好吧☺️)
  2. 实现文章开始给出的图的辅助bar的的数据的算法;
  3. 顺便告诉大伙写完代码要记得优化;
提炼代码是代码重构的常见技巧 ——腾讯高级工程师曾探

说明一下,上面代码仅供抛砖引玉,如有误导,不胜荣幸!!!😁