ECMAScript 2021 中如何进行最佳的数组排序

阅读时长 4 分钟读完

数组排序是前端开发中最基础也是最常见的操作之一。在 ECMAScript 2021 中,主要有 2 种排序方法:sort() 和 sortedIndex()。

sort() 方法

sort() 方法是在原数组上修改排序顺序的。该方法会将数组的元素按照 Unicode 码点进行排序。在排序之前,sort() 方法会调用数组元素的 toString() 方法,将其转换为字符串,再比较排序。因此,sort() 方法并不能很好地处理数值类型的排序,需要使用自定义排序函数。

使用 sort() 方法进行默认排序

sort() 方法的默认排序是按照 ASCII 码表的顺序进行排列,不过有时这并不是我们想要的。可以使用以下方法进行排序:

我们可以看到输出结果并不是我们期望的,所以需要自定义排序函数。

使用 sort() 方法进行自定义排序

我们可以使用自定义排序函数来解决默认排序的问题。

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

使用 sort() 方法进行复杂对象的排序

当需要对复杂对象进行排序时,我们需要给 sort() 方法传入一个比较函数。这个比较函数需要返回一个数字来表示两个元素的顺序关系。例如:

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

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

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

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

sortedIndex() 方法

sortedIndex() 方法返回给出的值在这个数组中应该被放置的位置的索引值。这个方法非常适合用于数组元素的插入或者排序。

总结

在 ECMAScript 2021 中进行最佳的数组排序需要注意以下几点:

  1. sort() 方法是按照 Unicode 码点进行排序的,而且其默认排序方式是按照 ASCII 码表的顺序进行排列。

  2. 为了进行自定义排序,需要传入一个比较函数。这个函数应该返回一个数字来比较两个元素的顺序关系。

  3. 当需要对复杂对象进行排序时,需要传入一个比较函数,并需要注意对象的属性值类型。

  4. sortedIndex() 方法返回给出的值在这个数组中应该被放置的位置的索引值,非常适合用于数组元素的插入或排序。

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

纠错
反馈