为什么 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; }
默认compare函数的参数会转换为字符串,并且字符串按字典顺序排序:
可选compareFn
指定定义排序顺序的函数。如果省略,则将数组元素转换为字符串,然后根据每个元素进行排序 字符的 Unicode 代码点值。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toSorted