欢迎光临散文网 会员登陆 & 注册

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

2023-02-15 12:56 作者:路条编程  | 我要投稿


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


碎片时间学编程「270]:JavaScript 数组排序速记的评论 (共 条)

分享到微博请遵守国家法律