一、对一个对象数组按照对象某个属性进行排序 : http://www.javashuo.com/article/p-gxuuobev-dr.htmlhtml
在作公交的项目中就碰到过这种算法问题,从后台请求回来的一大堆的数据,都须要前端处理。因此就把这个问题写进博客里。前端
只要是 js的sort()方法 的使用:http://www.javashuo.com/article/p-gadlxnpe-dv.htmles6
sort()方法 的执行过程:web
(我的分析) sort()函数的 比较函数,在执行时,js程序会依次把 数组的项,两个两个的传递给比较函数的形参。算法
根据比较函数的返回值 是否大于0,再决定传递进来的这两项是否要对换位置。数组
arr.sort(function(a,b){ return a-b; // return的值为 正或0,则数组中a、b对应的实参 不调换位置。 }); // return的值为 负,则数组中a、b对应的实参 调换位置。
经过测试,发现数组arr中的取某两个项的组合,并无所有都进入了比较函数中(这个内部是怎么实现的,咱们能够不用深究),浏览器
可是最后的结果就是按照顺序return中要求的比较的规则进行排序了。数据结构
var arr = [4,3,8,2,6]; console.log("起始",arr); arr.sort(function(a,b){ console.log(a,b); // 这里输出的并无把arr全部的组合所有都执行了一遍比较函数,内部确定经过某种方式实现了最少次的比较,获得数值全部项按照顺序排列。 return a-b; // 这里内部具体是经过什么机制实现的最少次比较的,能够不用太过深究 }); // 4 3 // 4 8 // 8 2 // 4 2 // 3 2 // 8 6 // 4 6
二、冒泡排序(将数值按照大小顺序进行排列): http://www.javashuo.com/article/p-bdcxjfdm-h.htmlapp
三、数组中的最小值和最大值:http://www.javashuo.com/article/p-xzwdvmiv-hp.html 或 https://www.cnblogs.com/ywx354980-bk/p/8718541.html函数
a、排序法:
b、js中Math 对象的 min 和 max 方法 :
min 和 max 方法的参数都是数值,而不是数组。因此要利用min和max方法必需要把数组的值一个一个取出来做为参数。
apply方法 的第二个参数是数组,传递到 劫持(继承)对象方法的参数, 是数组中的值一个一个传递过去(而不是一个对象)。即 apply数组参数 --> 继承对象方法的arguments。而对象的参数是 arguments[ i ]
注:不过es6中有一个 展开运算符(...),能够将数值或对象两边的 [] 或 {} 去掉的功能。因此min 和 max能够经过 展开运算符 直接实现。
四、数组中全部的值 与 一个已知值的 的差值的最小值:
我的体会:算法基本 和 数组有关,因此数组有关的API要熟练。
总结:通常在js中涉及到的算法就 排序算法、二分查找、动态规划(最好避免使用递归的算法,效率过低了,容易引发浏览器假死状态)
别人的关于js算法的博客:
一、JS常见的算法 : http://www.javashuo.com/article/p-mrbzjehz-nb.html
一、我的以为,数据结构要考虑的也就对象、数组两种。其余的数据结构,不多去用到。