Javascript 中的 toSorted()

问题描述 投票:0回答:1

为什么 toSorted() 方法需要 (a, b) => a - b 作为参数才能正常工作?如果我不带参数排序,它会按第一个数字对数字进行排序。

function sumOfTwoBiggest(...args) {
  const arr = [];
  arr.push(...args);
  let sortedArr = arr.toSorted((a, b) => a - b); /* if arr.toSorted() - sort only by first digit, like 1001, 11000, 29000, 3, 455 ...*/
  console.log(sortedArr);
  console.log(sortedArr[sortedArr.length - 1] + sortedArr[sortedArr.length - 2]);
}
console.log(sumOfTwoBiggest(455, 95, 1001, 3, 93, 88, 11000, 29000));
.as-console-wrapper    { max-height: 100% !important;top: 0; }

javascript arrays sorting
1个回答
1
投票

默认compare函数的参数会转换为字符串,并且字符串按字典顺序排序:

compareFn
可选

指定定义排序顺序的函数。如果省略,则将数组元素转换为字符串,然后根据每个元素进行排序 字符的 Unicode 代码点值。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toSorted

© www.soinside.com 2019 - 2024. All rights reserved.