前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前端到底要不要算法?

前端到底要不要算法?

作者头像
icepy
发布2019-06-24 18:01:03
1.7K0
发布2019-06-24 18:01:03
举报
文章被收录于专栏:子曰五溪子曰五溪

1+1=2的问题,我们都知道。但是市场上面依然能看到一句缪论“前端不需要算法”,这个不可否认,是不需要太多的算法,因为一个合理的产品,对于展示层的表现,应该注重的是视觉的还原和细节,但是!算法在某些情况下,对于性能的优化,有着很显著的提升。

举个例子,假设后端没有给你提供排序好的数据,这些数据有10万条,要求你根据这些数据提取前20条,可能会根据时间排序。(这是一个很极端的例子),从软件的设计角度来看,这个事情放在前端是不合理的,但就是在这种极端条件下,你该如何提取这20条呢?

  • 正常循环,先排序,然后取前20
  • 有没有想过利用work?来分组计算,先以1000条数据为一组,分100组,计算这100组里的TOP ONE,最后提取TOP ONE 再分组,逐渐缩小范围

你看,这样的方式,是不是明显比正常循环,先排序,要高效的多。这就是算法对于程序带来的提升。可能你会说,这样的设计是不合理的。对,我也认可,这样的计算应该放在后端,那么我们再来看一个小例子。

我们有一组n个元素的价格表,其实在展示逻辑里,我们有一个价格,想要在这个价格表中找到比对,如果没有在价格表中,则说明这个价格是一个错误的价格,需要在前端展示一个红色的标注。

正常情况下,可以直接使用indexOf来处理这个问题,那么你能知道indexOf自己的实现吗?假设没有这个indexOf,我们该如何来处理?这个时候,其实二分查找,就能很好的解决这个问题,这是一个很高效搜索的方法,这都谈不上算法,是一个很常见的方式。

  • 从中间元素开始搜索,如果命中,退出循环
  • 如果目标元素大于中间元素,则往大于的方向搜索,重复第一步
  • 如果目标元素小于中间元素,则往小于的方向搜索,重复第一步

如果都没有找到,设置一个边界条件,返回-1,退出循环。于是,你就可以在前端的展示中,用红色来标记一个提示了。

可见,前端还是很需要了解算法和数据结构的,只有了解这些,你才能更好的去选择方案,知道哪些可以做,哪些不能做,也知道哪些可以做的更好。

想想React或者Vue吧,如果没有良好的数据结构设计,我们能想到用虚拟DOM的方式来开发Web应用吗?并且这样的数据结构,甚至扩展到了Web之外,看看RN和Weex,这就很好的说明了问题。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 子曰五溪 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档