关于sort()函数排序问题的解决

2020-09-14  本文已影响0人  虾米不是鱼

sort() 方法用于对数组的元素进行排序。

问题:如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序

比如:['1','41','4','10']

排序的结果为:['1','10','4','41']

他是按照字母顺序进行排序,所以会出现这个问题

W3C上有这么一句话:

如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:

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')

上一篇 下一篇

猜你喜欢

热点阅读