数组Array的排序sort方法
JavaScript中的Array对象有自己的排序方法sort(),对数组中的数据项进行排序,但是有时候排序结果不尽如人意,比如
vararr=[12,1,2,21,3]; arr.sort(); alert(arr);得到的结果为1,12,2,21,3
这是为什么呢?因为JavaScript中的排序默认按照ascii字符代码进行排序,也就是说,数字也是按照它们的字符串形式排序的。
varstrArr=['a','2','a2','2a','b','3']; alert(strArr.sort());
这个得到什么结果呢?2,2a,3,a,a2,b
因为数字的ascii码比字母的小,所以数字排在前面,字母排在后面。
如果想继续让上面的数组arr按照数字进行排序,怎么处理呢?
JavaScript给我们提供了一个入口,可以给sort()方法传递一个参数,即比较函数,来告诉排序算法值与值之间是大于、小于还是等于关系。
比较函数是有着特定算法的函数。
functioncompare_fn(value1,value2){ if(value1<value2){ return-1; }elseif(value1>value2){ return1; }else{ return0; } }
将比较函数compare_fn传递给sort,再进行排序,然后输出
arr.sort(compare_fn); alert(arr);得到1,2,3,12,21
JavaScript中Array对象的sort方法返回值的定义为
负值:如果所传递的第一个参数比第二个参数小
零:两个值相等
正值:如果第一个参数比第二个参数大
上面的比较函数还可以简写为
functioncompare_fn(value1,value2){ returnvalue1-value2; }
这个比较的为升序排列
如果想降序排列,直接改变上面的返回值的符号就可以了,给所有返回均取反。
对简写的比较函数就是
functioncompare_fn(value1,value2){ return-(value1-value2); }
即
functioncompare_fn(value1,value2){ returnvalue2-value1; }
简单的记法就是:顺序升;逆序降。
以上这篇数组Array的排序sort方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。