Skip to content

数组排序

数组排序的方法有:reverse()sort()

reverse()

reverse()方法会就地反转数组的元素顺序,并返回同一数组的引用。

ts
const arr = [1, 2, 3, 4, 5];
arr.reverse();
console.log(arr); // [ 5, 4, 3, 2, 1 ]
如何在不改变原数组的情况下反转数组
  1. 使用toReverse()方法,它不会改变原数组,而是返回一个新数组。(自 2023 年 7 月起适用于最新的设备和浏览器,可能不适用于较旧的设备)

  2. 使用展开语法获取一个浅拷贝数组,然后使用reverse()方法:[...arr].reverse()

sort()

sort()方法会就地对数组的元素进行排序,并返回同一数组的引用。

默认排序是将元素转换为字符串,然后按照它们的 UTF-16 码元值升序排序。

ts
const months = ["March", "Jan", "Feb", "Dec"];
months.sort();
console.log(months); // [ 'Dec', 'Feb', 'Jan', 'March' ]

sort()方法还可以接受一个比较函数作为参数,用于指定排序顺序。

比较函数的返回值是一个数字:

  1. a < b,则返回负数
  2. a = b,则返回 0(NaN 被视为 0)
  3. a > b,则返回正数
ts
const mixedNumericArray = ["80", "9", "700", 40, 1, 5, 200];
mixedNumericArray.sort((a, b) => Number(a) - Number(b));
console.log(mixedNumericArray); // [1, 5, '9', 40, '80', 200, '700']
如何在不改变原数组的情况下对数组排序
  1. 使用toSorted()方法,它不会改变原数组,而是返回一个新数组。(自 2023 年 7 月起适用于最新的设备和浏览器,可能不适用于较旧的设备)

  2. 使用展开语法获取一个浅拷贝数组,然后使用sort()方法:[...arr].sort()