ES10 中如何使用 Array.prototype.sort 稳定排序

阅读时长 3 分钟读完

在 JavaScript 的开发中,对数组进行排序是一项常见的操作。ES6 之前,我们只能使用 Array.prototype.sort() 方法来对数组进行排序,但是在排序的过程中,有些情况下我们需要对相同的元素保持原来的顺序,这就需要用到稳定排序。ES10 中,Array.prototype.sort() 方法已经支持稳定排序了,本文将介绍如何使用稳定排序。

什么是稳定排序

稳定排序是指,当排序的元素中有两个或多个元素值相同时,排在前面的元素在排序后仍然排在前面。简单来说,就是相同元素按照原来的顺序排序。比如下面的数组:

按照年龄排序,如果使用稳定排序,排序后的数组应该是:

可以看到,年龄相同的元素按照原来的顺序排序。

如何使用稳定排序

在 ES10 中,Array.prototype.sort() 方法新增了一个可选参数 compareFunctionOptions,用来指定排序的方式。其中,compareFunctionOptions 可以是一个字符串,也可以是一个对象。如果是一个字符串,可以取值为 'asc''desc''locale''number',分别代表升序、降序、本地化排序和数字排序。如果是一个对象,则可以指定 compareFunctionstable 两个属性,其中 compareFunction 表示排序函数,stable 表示是否使用稳定排序。

下面是一个使用稳定排序的示例代码:

-- -------------------- ---- -------
----- --- - -
  - ----- ------ ---- -- --
  - ----- -------- ---- -- --
  - ----- ------ ---- -- --
--

----------
  ---------------- --- -- -- ----- - ------
  ------- -----
---

-----------------

输出结果为:

可以看到,使用稳定排序后,年龄相同的元素按照原来的顺序排序。

总结

稳定排序是一项常见的操作,在 ES10 中,Array.prototype.sort() 方法新增了一个可选参数 compareFunctionOptions,可以用来指定排序的方式,其中包括稳定排序。使用稳定排序可以保持相同元素的顺序不变,方便开发者进行后续的操作。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65bb7ee7add4f0e0ff454177

纠错
反馈