有人会问前端须要会数据结构吗,前端须要会算法吗?这些针对内存和cpu的家伙对我来讲有什么用呢?若是你问一个前端工程狮,工做中遇到遇到的数据结构问题,他一脸蒙蔽,“老子不用数据结构,照样能写出来老板须要的代码。学数据结构有求用”。若是只作前端的话数据结构确实没用。链表,散列表,队列,栈。前端最多弄个数组(var ary=[]);说排序算法更是扯淡,数组自带排序函数sort,方便的很。更别提什么二叉树,竞赛树,红黑树,AVL树,还有图,通通没用。因此后端老是嘲笑前端,这是一群作ui的家伙,根本就不懂程序。也许你会问:做为前端工程师真的不用懂数据结构吗?确实不用懂数据结构,假如你知道了链表,散列,字典,有用吗?估计这辈子也用不上,v8内存自动回收,注意内存泄漏就行,而且js只有object,和arry,function,null,number,symbel,bool,string。上帝根本就没有给你机会使用这些牛逼的东西(其实后端工程师也不必定怎么懂)。前端
既然这样,前端工程师会想:那算法也没用了,算法以数据结构为基础,优化程序的时间或者空间复杂度的。片面,其实算法仍是颇有用的,这个东西永远都不会过期,就是将一个问题的解决转化为数学表达,在转化为电脑程序,这多是复制粘贴程序员和资深程序员的区别了。而且在工做中也是很常见的。例如:jquery
jquery有一树型插件,须要的数据结构是这样的,程序员
{
name:"top",
value:"bumen",
children:[{
name:"son",
value:'kankan',
children:[{
name:"sun"
value:"dsfasd"
},{算法
}]
},{数据库
}]
}后端
但是后端查询数据库,返回的是对象数组结构是这样的:数组
[{name:"asdfasd",value:"asdfsadf",children:"indexwe"},{name:'',value:"",children:none}];前端工程师
这时你不得不转化数据,这只是一个简单的例子,因此前端工程师是要懂算法思想的。算法思想有哪些呢?数据结构
大概分为一下5种,贪婪算法,分而治之,动态规划,回溯法,以及分支界定法。下一篇文章开始讲解。函数