碎片时间学编程「270]:JavaScript 数组排序速记

JavaScript 数组排序速记
在对原始值数组(例如字符串或数字)进行排序时,您经常会看到很多代码如下所示:
const arr = [8, 2, 1, 4, 5, 0];
// Sort in ascending order
arr.sort((a, b) => {
if (a > b) return 1;
if (b > a) return -1
return 0;
}); // [0, 1, 2, 4, 5, 8]
虽然这段代码可以完成这项工作,但还有一个单行代码可供选择。这个技巧取决于 Array.prototype.sort() 方法期望正值或负值来执行两个元素之间的交换,从而允许比 1 和 -1 更灵活的值。减去数组中的数值就足够了,也可以用相反的方式对数组进行排序:
const arr = [8, 2, 1, 4, 5, 0];
// Sort in ascending order
arr.sort((a, b) => a - b); // [0, 1, 2, 4, 5, 8]
// Sort in descending order
arr.sort((a, b) => b - a); // [8, 5, 4, 2, 1, 0]
如果您正在使用字符串数组,您应该改用 String.prototype.localeCompare() 方法,因为它通过考虑特定区域设置及其独特需求提供了更大的灵活性:
const s = ['Hi', 'Hola', 'Hello'];
// Sort in ascending order
arr.sort((a, b) => a.localeCompare(b)); // ['Hello', 'Hi', 'Hola']
// Sort in descending order
arr.sort((a, b) => b.localeCompare(a)); // ['Hola', 'Hi', 'Hello']
更多内容请访问我的网站:https://www.icoderoad.com