在编程过程中,我们常常需要对数组进行排序操作。ECMAScript 2019 引入了一种新的 Array.sort 方法,它能够方便地对不同类型的数据进行排序。
Array.sort() 方法简介
Array.sort() 方法是 JavaScript 数组方法之一,用于对数组元素进行排序,默认按照 UTF-16 编码的顺序进行排序(即按字母表顺序排序)。sort() 方法会改变原数组,同时返回排序后的数组。
sort() 方法还可以接收一个比较函数作为参数,该函数决定元素排序的方式。如果没有传递比较函数,则 sort() 方法将对数组元素进行默认排序。
下面让我们来看一下如何使用 Array.sort() 方法来实现不同类型数据的排序。
实现方法
1. 对字符串进行排序
对字符串进行排序,我们只需要将 sort() 方法的参数省略掉或者传递一个空函数。由于字符串比较是按照 UTF-16 编码的顺序进行排序的,所以 sort() 方法可以直接对字符串进行排序。
const strList = ['Java', 'JavaScript', 'Python', 'C++']; strList.sort(); console.log(strList); // 输出:[ 'C++', 'Java', 'JavaScript', 'Python' ]
2. 对数字进行排序
对数字进行排序,需要传入一个比较函数。这里我们可以直接使用 ES6 中的箭头函数,它的语法简洁而且易于理解。
const numList = [8, 2, 14, 1]; numList.sort((a, b) => a - b); console.log(numList); // 输出:[ 1, 2, 8, 14 ]
我们也可以通过比较两个数字的字符串形式来实现排序:
const numList = [8, 2, 14, 1]; numList.sort((a, b) => (`${a}`).localeCompare(`${b}`)); console.log(numList); // 输出:[ 1, 2, 8, 14 ]
这里使用了 String.prototype.localeCompare() 方法比较两个数字的字符串形式。
3. 对对象进行排序
对对象进行排序稍微有些复杂,我们需要指定对象的属性进行排序。
-- -------------------- ---- ------- ----- ---------- - - - ----- ------ ---- -- -- - ----- ------ ---- -- -- - ----- -------- ---- -- - -- ------------------- -- -- ----- - ------- ------------------------ -- --- - - ----- -------- ---- -- -- - ----- ------ ---- -- -- - ----- ------ ---- -- - - --
这里传入的比较函数是按照对象的 age 属性进行升序排序。如果要实现降序排序,只需要修改比较函数即可。
-- -------------------- ---- ------- ----- ---------- - - - ----- ------ ---- -- -- - ----- ------ ---- -- -- - ----- -------- ---- -- - -- ------------------- -- -- ----- - ------- ------------------------ -- --- - - ----- ------ ---- -- -- - ----- ------ ---- -- -- - ----- -------- ---- -- - - --
总结
通过本文的介绍,我们了解了如何在 ECMAScript 2019 中使用 Array.sort() 方法对不同类型的数据进行排序。虽然 sort() 方法在实现上很简单,但是通过各种场景的演示,我们可以发现它具有广泛的应用价值和必要性。在实际开发中,能够熟练使用 sort() 方法将极大地提高程序员的效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/651b749395b1f8cacd31c90e