下面小编就给大家带来一个数组Array的排序方法。我觉得边肖挺好的。我现在就分享给你,给你一个参考。来和边肖一起看看吧。
JavaScript中的Array对象有自己的排序方法sort(),对数组中的数据项进行排序,但有时排序结果并不令人满意,比如
var arr=[12,1,2,21,3];
arr . sort();
警报(arr);结果是1,12,2,21,3。
这是为什么呢?因为JavaScript中的排序默认是按照ascii字符码排序的,也就是数字也是按照其字符串形式排序的。
var strArr=[a , 2 , a2 , 2a , b , 3 ];
alert(strarr . sort());
这样的结果是什么?2,2a,3,a,a2,b
因为数字的ascii码比字母小,所以数字在前,字母在后。
如果要保持上面的数组arr按数字排序,应该怎么做?
JavaScript为我们提供了一个条目,可以向sort()方法传递一个参数,即比较函数,告诉排序算法值是大于、小于还是等于值。
比较函数是具有特定算法的函数。
函数compare_fn(值1,值2) {
if(值1值2) {
return-1;
} else if (value1 value2) {
返回1;
}否则{
返回0;
}
}
传递比较函数compare_fn进行排序,排序,输出。
arr . sort(compare _ fn);
警报(arr);得到1,2,3,12,21
JavaScript数组对象的排序方法的返回值定义为
负值:如果传递的第一个参数小于第二个参数
零:两个值相等。
正值:如果第一个参数大于第二个参数
上面的比较函数也可以缩写为
函数compare_fn(值1,值2) {
返回值1 -值2;
}
这种比较是按升序进行的。
如果要降序排序,直接改变上面返回值的符号就行了,所有的返回都是倒序的。
速记的比较函数是
函数compare_fn(值1,值2) {
return -(值1 -值2);
}
也就是
函数compare_fn(值1,值2) {
返回值2 -值1;
}
简单的记法是:按顺序升序排列;反向下降。
以上Array数组排序方法是边肖分享的全部内容。希望给大家一个参考,支持我们。