JS sort 方法使用详解

时间:2025-04-07 07:13:49

https:///article/

sort()方法主要是用于对数组进行排序,默认情况下该方法是将数组元素转换成字符串,然后按照ASC码进行排序,这个大家都能理解,但如果数组元素是一个Object呢,转不了字符串,难道不能进行排序?答案当然是否定的,那么我们就来详细探讨下sort()方法的使用

语法:(sortby);参数sortby可选。规定排序顺序。必须是函数。

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

如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,

首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

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

function sortNumber(a, b){
   return a - b; //这里返回的是他们的差值,如果是大于0的值,就会将b排在前面,如果小于0,
   就会将a排在前面,如果是0的话,就随便。(冒泡排序法!!)
}

比较函数应该具有两个参数 a 和 b,其返回值如下:

 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。

 若 a 等于 b,则返回 0。

 若 a 大于 b,则返回一个大于 0 的值。

总结: 升序 -> return a - b; 降序-> return b - a;

// 需要升序或者降序则需要传入一个函数参数
var arr = [3,2,3,34,12,23,234,84,9];
(function (a, b) {
    return a - b;
});
// 结果:2,3,3,9,12,23,34,84,234
 
// 降序
var arr = [3,2,3,34,12,23,234,84,9];
(function (a, b) {
    return b - a;
});

// 按name排列
var users =[
        { "name": "has",   "age": 17, "height": 165 },
        { "name": "saf",   "age": 20, "height": 172 },
        { "name": "gngh",  "age": 45, "height": 182 },
        { "name": "yjerw", "age": 42, "height": 156 },
        { "name": "cvb",   "age": 22, "height": 176 },
        { "name": "wetty", "age": 32, "height": 178 },
        { "name": "aDNY",  "age": 34, "height": 175 }
     ]
var (function (a, b) {
    return  - ;
});

上面的代码没有按照数值的大小对数字进行排序,要实现这一点,就必须使用一个排序函数:

1

2

3

4

5

6

7

8

9

10

11

12

13

<script>

  var arr = [23,12,1,34,116,8,18,37,56,50];

  function sequence(a,b){

    if (a>b) {

      return 1;

    }else if(a<b){

      return -1

    }else{

      return 0;

    }

  }

  ((sequence));

</script>

返回:[1, 8, 12, 18, 23, 34, 37, 50, 56, 116] (没有问题)