1+1=2的问题,我们都知道。但是市场上面依然能看到一句缪论“前端不需要算法”,这个不可否认,是不需要太多的算法,因为一个合理的产品,对于展示层的表现,应该注重的是视觉的还原和细节,但是!算法在某些情况下,对于性能的优化,有着很显著的提升。
举个例子,假设后端没有给你提供排序好的数据,这些数据有10万条,要求你根据这些数据提取前20条,可能会根据时间排序。(这是一个很极端的例子),从软件的设计角度来看,这个事情放在前端是不合理的,但就是在这种极端条件下,你该如何提取这20条呢?
你看,这样的方式,是不是明显比正常循环,先排序,要高效的多。这就是算法对于程序带来的提升。可能你会说,这样的设计是不合理的。对,我也认可,这样的计算应该放在后端,那么我们再来看一个小例子。
我们有一组n个元素的价格表,其实在展示逻辑里,我们有一个价格,想要在这个价格表中找到比对,如果没有在价格表中,则说明这个价格是一个错误的价格,需要在前端展示一个红色的标注。
正常情况下,可以直接使用indexOf来处理这个问题,那么你能知道indexOf自己的实现吗?假设没有这个indexOf,我们该如何来处理?这个时候,其实二分查找,就能很好的解决这个问题,这是一个很高效搜索的方法,这都谈不上算法,是一个很常见的方式。
如果都没有找到,设置一个边界条件,返回-1,退出循环。于是,你就可以在前端的展示中,用红色来标记一个提示了。
可见,前端还是很需要了解算法和数据结构的,只有了解这些,你才能更好的去选择方案,知道哪些可以做,哪些不能做,也知道哪些可以做的更好。
想想React或者Vue吧,如果没有良好的数据结构设计,我们能想到用虚拟DOM的方式来开发Web应用吗?并且这样的数据结构,甚至扩展到了Web之外,看看RN和Weex,这就很好的说明了问题。