在 JavaScript 中,Array.sort 方法是用于对数组进行排序的常用方法。而在 ES10 中,Array.sort 方法新增了一些特性,使得其更加强大和灵活。在本文中,我们将详细介绍 ES10 中新增的 Array.sort 方法,并提供一些使用示例和指导意义。
新增特性
ES10 中新增的 Array.sort 方法主要增加了以下两个特性:
- 支持对稳定排序的指定
- 支持对 Unicode 排序的指定
支持对稳定排序的指定
在 ES10 中,Array.sort 方法新增了一个可选的参数 compareFunctionOptions,用于指定排序是否为稳定排序。如果指定了 compareFunctionOptions 参数且其值为 "stable",则排序将是稳定排序,否则为非稳定排序。稳定排序指的是在排序过程中保持相同值的原始相对位置,而非稳定排序则没有这个保证。
以下是一个稳定排序的示例:
-- -------------------- ---- ------- ----- --- - - - ----- -------- ---- -- -- - ----- ------ ---- -- -- - ----- ---------- ---- -- -- - ----- ------- ---- -- - -- ------------ -- -- ----- - ------ - ------- ---- --- ----------------- -- ------- - -- - ----- ------ ---- -- -- -- - ----- ------- ---- -- -- -- - ----- -------- ---- -- -- -- - ----- ---------- ---- -- - -- -
在上面的示例中,我们对一个包含多个对象的数组进行排序,按照 age 属性从小到大排序。由于我们指定了稳定排序,因此在 age 属性相同时,原始相对位置得到了保持。
支持对 Unicode 排序的指定
在 ES10 中,Array.sort 方法还新增了一个可选的参数 locale,用于指定排序时使用的语言环境。如果指定了 locale 参数,则排序将按照指定语言环境的 Unicode 排序规则进行。
以下是一个使用 locale 参数进行排序的示例:
const arr = ['ä', 'z', 'ö', 'ä', 'p']; arr.sort((a, b) => a.localeCompare(b, 'sv')); console.log(arr); // Output: [ 'ä', 'ä', 'ö', 'p', 'z' ]
在上面的示例中,我们对一个包含多个字符串的数组进行排序,按照 Swedish 语言环境的 Unicode 排序规则进行排序。由于 Swedish 语言环境的 Unicode 排序规则将 ä 和 ö 排在 a 和 o 的后面,因此最终排序结果为 [ 'ä', 'ä', 'ö', 'p', 'z' ]。
使用示例
除了上面介绍的两个特性外,ES10 中的 Array.sort 方法还有一些其他的用法和技巧。以下是一些使用示例和指导意义:
对数字数组进行排序
对于数字数组,我们可以使用 sort 方法的默认排序方式进行排序:
const arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]; arr.sort(); console.log(arr); // Output: [ 1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9 ]
对字符串数组进行排序
对于字符串数组,我们可以使用 localeCompare 方法进行排序:
const arr = ['b', 'a', 'd', 'c']; arr.sort((a, b) => a.localeCompare(b)); console.log(arr); // Output: [ 'a', 'b', 'c', 'd' ]
对对象数组进行排序
对于对象数组,我们可以使用 sort 方法的 compareFunction 参数进行排序:
-- -------------------- ---- ------- ----- --- - - - ----- -------- ---- -- -- - ----- ------ ---- -- -- - ----- ---------- ---- -- - -- ------------ -- -- ----- - ------- ----------------- -- ------- - -- - ----- ------ ---- -- -- -- - ----- -------- ---- -- -- -- - ----- ---------- ---- -- - -- -
倒序排序
如果想要对数组进行倒序排序,我们可以使用 reverse 方法:
const arr = [1, 2, 3]; arr.sort().reverse(); console.log(arr); // Output: [ 3, 2, 1 ]
随机排序
如果想要对数组进行随机排序,我们可以使用 Math.random 方法:
const arr = [1, 2, 3]; arr.sort(() => Math.random() - 0.5); console.log(arr); // Output: [ 2, 3, 1 ]
总结
ES10 中新增的 Array.sort 方法为我们提供了更加强大和灵活的排序功能。我们可以通过指定 compareFunctionOptions 参数和 locale 参数来实现稳定排序和 Unicode 排序。除此之外,我们还可以使用 sort 方法的默认排序方式、reverse 方法和 Math.random 方法等技巧来实现更多的排序需求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65c6c4f9add4f0e0ff106ccd