数组排序:
arr.sort([比较器函数对象]): 直接将原数组按升序排列!
默认sort方法,将所有元素统一转为字符串,PK unicode
***自定义数组排序:2步:
1. 先定义比较器函数:
比较器函数:通过返回>0或<0或=0的数
判断任意两值的大小
要求:如果a>b,则返回>0的数
如果a<b, 则返回<0的数
如果a=b,则返回=0的数
比如:a-b
1-12 <0 说明 a<b
123-23 >0 说明 a>b
3-3 =0 说明 a=b
固定套路:function compare(a,b){
return a-b;
}
函数本质:js中的函数也是一个对象!
函数名是引用函数对象的变量名!
2. 将比较器函数作为参数,传入sort方法
function compare(a,b){
return a-b;
}
//var compare=function(a,b){return a-b;}
arr.sort(compare);
何时要加():只要调用函数时,都要加()
何时不加:将函数作为对象传递时,仅用函数名即可!
不加圆括号
所有排序算法,只有升序排列!
只要颠倒比较器的正负号(*-1),即可升序改降序。
其实第一步和第二步可写成1句话:
arr.sort(function(a,b){return a-b;});
*节省内存空间!*
function fun(a,b){return a-b;}/*才会被声明提前*/
vs
var fun=function(a,b){return a-b;}
差别:
栈和队列:js中没有专门的栈和队列的类型
都是用数组模拟出来的!
栈:一端封闭,只能从另一端进出的数组
FILO
何时:只要数组只能从一端进出时
末尾入栈:arr.push(新值,...)
末尾出栈:var elem=arr.pop();
从头入栈:arr.unshift(新值,...)
从头出栈:var elem=arr.shift();
队列:只能从末尾进入,从头出的数组
FIFO
何时:希望数组中的元素按进入的顺序,依次使用时
易悦(深圳)科技有限公司
让快乐更简单
微信:EJoyYOJOY
微博:http://weibo.com/EJoyYOJOY
官网:http://www.ejoytec.com/
原文:http://www.cnblogs.com/Ejoy/p/5750499.html