JavaScript中的Array.prototype.sort()方法用于对数组的元素进行排序。这个方法可以接受一个可选的参数,该参数是一个比较函数,用于指定排序的规则。

如果没有提供比较函数,那么数组的元素将会按照字符串Unicode码点顺序进行排序。也就是说,比较的过程是这样的:先转换成字符串,然后比较第一个不同的字符,如果第一个字符相同,就比较第二个字符,以此类推。

然而,如果提供了比较函数,那么排序的过程将按照这个函数的返回值进行。比较函数的两个参数分别代表要比较的两个元素。如果比较函数返回一个小于0的值,那么第一个元素会被排在第二个元素之前;如果返回一个大于0的值,那么第一个元素会被排在第二个元素之后;如果返回0,那么两个元素的相对位置不变。

let arr = [3, 2, 1, 5, 4];  
arr.sort(function(a, b) {  
  return a - b;  
});  
console.log(arr); // 输出:[1, 2, 3, 4, 5]
 

在这个例子中,我们提供了一个比较函数function(a, b) { return a - b; }。这个函数会返回a和b的差值,因此数组会按照从小到大的顺序进行排序。

值得注意的是,sort()方法会改变原数组。如果你不希望改变原数组,可以先将原数组复制到一个新的数组中,然后再对新数组进行排序。

此外,sort()方法在处理对象数组时可能无法正常工作,因为它主要是根据字符串Unicode码点顺序进行排序的。对于对象数组,你可能需要提供一个更复杂的比较函数来正确地排序对象。

而且sort的实现的功能类似JAVA的比较器,数据排序从多维数组的第一维开始排序,可以自己定义排序方法。
语法:arrayObject.sort(sortby)
参数sortby:可选,规定排序顺序。必须是函数。
返回对数组的引用。注意,数组在原数组上进行排序,不生成副本。
如果该方法没有使用参数,将按照字符编码的顺序进行排序。
如果想要按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一
个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数a和b,其返回值如下:
1)若a小于b,在排序后的数组中a应该出现在b之前,返回一个小于0的值。
2)若a等于b,返回0。
3)若a大于b,则返回一个小于0的值。

 

01-05 13:54