[英]How does this used to sort an array works?
这段代码是如何工作的? 我不明白减号是如何使用的。 我正在使用对象数组。 这是它的工作原理吗? 如果 B 的值是 10,而 A 等于 20,则 10 - 20 是 -10。 当它返回 -10 时,它将首先出现。
player.sort((a,b)=> {
return b.score - a.score;
});
如果未提供 compareFunction,则所有未定义的数组元素将通过将它们转换为字符串并按 UTF-16 代码单元顺序比较字符串来排序。 例如,“香蕉”在“樱桃”之前。 在数字排序中,9 在 80 之前,但由于数字被转换为字符串,因此在 Unicode 顺序中“80”在“9”之前。 所有未定义的元素都排序到数组的末尾。
注意:在 UTF-16 中,\ 以上的 Unicode 字符被编码为两个代理代码单元,范围为 \?-\?。 每个代码单元的值被单独考虑以进行比较。 因此,由代理对 \확\? 形成的字符将排在字符 \Z 之前。
如果提供了 compareFunction,则所有未定义的数组元素将根据比较函数的返回值进行排序(所有未定义的元素都排序到数组的末尾,不调用 compareFunction)。 如果 a 和 b 是要比较的两个元素,则:
如果 compareFunction(a, b) 返回小于 0,则将 a 排序到低于 b 的索引(即 a 在前)。 如果 compareFunction(a, b) 返回 0,则使 a 和 b 彼此保持不变,但相对于所有不同元素进行排序。 注意:ECMAscript 标准不保证这种行为,因此,并非所有浏览器(例如至少可以追溯到 2003 年的 Mozilla 版本)都尊重这一点。 如果 compareFunction(a, b) 返回大于 0,则将 b 排序到小于 a 的索引(即 b 在前)。 当给定一对特定的元素 a 和 b 作为它的两个参数时,compareFunction(a, b) 必须始终返回相同的值。 如果返回不一致的结果,则排序顺序未定义。 因此,比较函数具有以下形式:
function compare(a, b) {
if (a is less than b by some ordering criterion) {
return -1;
}
if (a is greater than b by the ordering criterion) {
return 1;
}
// a must be equal to b
return 0;
}
为了比较数字而不是字符串,比较函数可以简单地从 a 中减去 b。 以下函数将按升序对数组进行排序(如果它不包含 Infinity 和 NaN):
function compareNumbers(a, b) {
return a - b;
}
参考: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.