如何使用 ES10 中的 Array.sort() 方法来实现多级排序和自定义排序

如何使用 ES10 中的 Array.sort() 方法来实现多级排序和自定义排序

在前端开发过程中,我们经常需要对数组进行排序。而 ES10 中的 Array.sort() 方法提供了更加灵活的排序方式,可以实现多级排序和自定义排序。本文将详细介绍如何使用这个方法来实现这两种排序方式。

多级排序

多级排序指的是按照多个属性进行排序。例如,我们有一个对象数组,每个对象有两个属性:name 和 age。我们需要先按照 name 属性进行排序,如果 name 属性相同,则按照 age 属性进行排序。这种情况下,我们需要使用 Array.sort() 方法的回调函数。

回调函数接受两个参数,分别是当前比较的元素和下一个比较的元素。如果返回值小于 0,表示当前元素排在下一个元素前面;如果返回值大于 0,表示当前元素排在下一个元素后面;如果返回值等于 0,表示当前元素和下一个元素的顺序不变。

下面是实现多级排序的示例代码:

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

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

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

在上面的代码中,我们先比较 name 属性,如果相同则比较 age 属性。使用 localeCompare() 方法比较字符串,可以保证中文排序的正确性。

自定义排序

自定义排序指的是按照特定的规则排序。例如,我们有一个数字数组,需要将其中的偶数放在前面,奇数放在后面,并按照从小到大的顺序排序。这种情况下,我们需要使用 Array.sort() 方法的回调函数,并在回调函数中实现自定义排序规则。

下面是实现自定义排序的示例代码:

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

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

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

在上面的代码中,我们先判断 a 和 b 是否都是偶数,如果是,则按照从小到大的顺序排序;如果 a 是偶数,b 是奇数,则 a 排在 b 前面;如果 a 是奇数,b 是偶数,则 a 排在 b 后面;如果 a 和 b 都是奇数,则按照从小到大的顺序排序。

总结一下,使用 ES10 中的 Array.sort() 方法可以实现多级排序和自定义排序,可以满足我们在前端开发中的各种排序需求。需要注意的是,在回调函数中实现排序规则时,要考虑到各种情况,保证排序的正确性。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6606c3cbd10417a22254e929