返回

JS数组sort()方法的知识拓展

前端

定义与用法

sort() 方法用于对数组的元素进行排序,并返回一个新的数组。数组中的元素会被原地修改。

const arr = [1, 3, 5, 2, 4];
arr.sort();
console.log(arr); // [1, 2, 3, 4, 5]

sort() 方法默认使用元素的自然顺序进行排序。对于字符串来说,自然顺序是按照Unicode码值进行排序的。对于数字来说,自然顺序是从小到大。对于日期来说,自然顺序是按照日期值进行排序。对于布尔值来说,自然顺序是false排在true之前。对于null和undefined来说,它们会被排在最后。

参数

sort() 方法接受一个可选的参数,即比较函数。比较函数用于指定排序的规则。比较函数接收两个参数,即要比较的两个元素。如果第一个元素应该排在第二个元素之前,则比较函数应该返回一个负数。如果第一个元素应该排在第二个元素之后,则比较函数应该返回一个正数。如果第一个元素和第二个元素相等,则比较函数应该返回0。

const arr = [1, 3, 5, 2, 4];
arr.sort((a, b) => a - b);
console.log(arr); // [1, 2, 3, 4, 5]

返回值

sort() 方法返回一个新的数组。数组中的元素会被原地修改。

使用技巧

  • sort() 方法对数组中的元素进行排序,但不会修改数组的长度。
  • sort() 方法默认使用元素的自然顺序进行排序。可以通过比较函数来指定排序的规则。
  • sort() 方法可以对任何类型的数组进行排序,包括字符串数组、数字数组、日期数组、布尔数组等。
  • sort() 方法可以对多维数组进行排序。
  • sort() 方法可以对数组中的对象进行排序。

兼容性

sort() 方法兼容所有主流浏览器。

常见问题

  • sort() 方法是否会改变数组的原有顺序?

sort() 方法会改变数组的原有顺序。

  • sort() 方法如何对字符串进行排序?

sort() 方法默认按照Unicode码值对字符串进行排序。

  • sort() 方法如何对数字进行排序?

sort() 方法默认从小到大对数字进行排序。

  • sort() 方法如何对日期进行排序?

sort() 方法默认按照日期值对日期进行排序。

  • sort() 方法如何对布尔值进行排序?

sort() 方法默认将false排在true之前。

  • sort() 方法如何对null和undefined进行排序?

sort() 方法会将null和undefined排在最后。

示例

const arr = [1, 3, 5, 2, 4];

// 按升序排序
arr.sort();
console.log(arr); // [1, 2, 3, 4, 5]

// 按降序排序
arr.sort((a, b) => b - a);
console.log(arr); // [5, 4, 3, 2, 1]

// 按字符串长度排序
const arr2 = ['apple', 'banana', 'cherry'];
arr2.sort((a, b) => a.length - b.length);
console.log(arr2); // ['apple', 'cherry', 'banana']

// 按对象属性排序
const arr3 = [
  { name: 'John', age: 25 },
  { name: 'Mary', age: 30 },
  { name: 'Bob', age: 20 }
];
arr3.sort((a, b) => a.age - b.age);
console.log(arr3); // [{ name: 'Bob', age: 20 }, { name: 'John', age: 25 }, { name: 'Mary', age: 30 }]