Skip to content

sort 副作用

Grammar

ts
sort()
sort(compareFn)

Params

  • 无参数:数组元素会被转换为字符串,然后根据每个字符的 Unicode 码位值进行排序。

    例如“banana”会被排列到“cherry”之前。在数值排序中,9 出现在 80 之前,但因为数字会被转换为字符串,在 Unicode 顺序中“80”排在“9”之前。所有的 undefined 元素都会被排序到数组的末尾。

  • compareFn 可选

    定义排序顺序的函数。返回值应该是一个数字,其符号表示两个元素的相对顺序:

    • 返回值为负数,a-b<0,【倒序】a,b位置互换

    • 返回值为正数,a-b>0,【正序】a,b位置不变

    • 返回值为 0,位置不变

提示

  • return a-b:正序(小->大)
  • return b-a:倒序(大->小)

Return

经过排序的原始数组的引用。

Example

ts
const stringArray = ["Blue", "Humpback", "Beluga"];
const numberArray = [40, 1, 5, 200];
const numericStringArray = ["80", "9", "700"];
const mixedNumericArray = ["80", "9", "700", 40, 1, 5, 200];

function compareNumbers(a, b) {
  return a - b;
}

stringArray.join(); // 'Blue,Humpback,Beluga'
stringArray.sort(); // ['Beluga', 'Blue', 'Humpback']

numberArray.join(); // '40,1,5,200'
numberArray.sort(); // [1, 200, 40, 5]
numberArray.sort(compareNumbers); // [1, 5, 40, 200]

numericStringArray.join(); // '80,9,700'
numericStringArray.sort(); // ['700', '80', '9']
numericStringArray.sort(compareNumbers); // ['9', '80', '700']

mixedNumericArray.join(); // '80,9,700,40,1,5,200'
mixedNumericArray.sort(); // [1, 200, 40, 5, '700', '80', '9']
mixedNumericArray.sort(compareNumbers); // [1, 5, '9', 40, '80', 200, '700']