美文网首页
关于sort()函数排序问题的解决

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

作者: 虾米不是鱼 | 来源:发表于2020-09-14 11:05 被阅读0次

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

相关文章

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

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

  • 《算法笔记》4.1

    4.1.1选择排序 4.1.2插入排序 4.1.3排序题与sort函数的应用 6.9.6关于sort函数 头文件 ...

  • sort()和sorted()的区别

    sort()函数排序和sorted()函数排序区别-sorted不改变原值,而sort()改变原值 sort函数没...

  • 细说JNI与NDK(六)静态缓存,异常捕获,内置函数

    详细目录参考底部说明 NDK 内置函数简介 借助NDK数组排序,sort 内置函数解决问题qsort 在std...

  • Javascript常见问题(三)

    一. sort是如何排序的,如何解决sort排序的问题? arr2使用sort排序结果错误了,什么原因?js在计...

  • 品一品编程 --- 5

    问题描述: 实现基于数组的 sort 排序函数 程序如下: //冒泡排序 O(n^2) //快速排序---优势:...

  • sort函数的使用

    sort排序又叫快速排序(快排)1、需要引入头文件 2、sort函数的引用 默认的sort函数是按升序排。sort...

  • 数组排序相关

    数组排序相关 结合sort和函数排序: 数组由小到大进行排序:sort,sortnum; vararr = [...

  • js数组排序

    1、sort方法 sort在原数组上进行排序,不生成副本。sort接受一个函数参数,该函数定义排序规则。如果不传参...

  • 基本排序算法

    选择排序 插入排序 冒泡排序 中 sort 函数使用

网友评论

      本文标题:关于sort()函数排序问题的解决

      本文链接:https://www.haomeiwen.com/subject/lbreektx.html