sort() 方法用于对数组的元素进行排序。
问题:如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序
比如:['1','41','4','10']
排序的结果为:['1','10','4','41']
他是按照字母顺序进行排序,所以会出现这个问题
在 W3C上有这么一句话:
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
-
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
-
若 a 等于 b,则返回 0。
-
若 a 大于 b,则返回一个大于 0 的值。
var arr = ['1','10','4','41'];
function sortNumber(a,b){
return a-b
}
arr.sort(sortnumber);
另外还有一种数组对象的进行按字段排序:
var arr =[
{name:'lee',age:32},
{name:'wang',age:30},
{name:'zhang',age:21},
{name:'xiao',age:45}
]
/**
* array[数组]
* key[string] 通过什么字段进行排序
* order[number] 1从大到小,-1或者不传 从小到大
*/
function sortByKey(array,key){
if(!order || order == -1){
return array.sort(function(a,b){
var x=parseInt(a[key]);
var y=parseInt(b[key]);
return ((x<y)?-1:((x>y)?1:0));
});
}else if(order == 1){
return array.sort(function(a,b){
var x=parseInt(a[key]);
var y=parseInt(b[key]);
return ((x>y)?-1:((x<y)?1:0));
});
}
}
var newArr = sortByKey(arr,'age')
网友评论