使用 JavaScript 的 Underscore.js 排序方式

介绍

Underscore.js 是一个流行的 JavaScript 工具库,为 JavaScript 提供了许多有用的函数和工具。其中一个重要的功能是排序,它可以帮助我们快速地对数组进行排序。在本文中,我将向您介绍如何使用 Underscore.js 中的排序函数来处理数据。

首先,让我们看一下几种不同的排序方法:

sortBy

sortBy 函数根据指定属性对数组进行排序,并返回一个新的已排序数组。例如,如果您有一个对象数组,每个对象都有一个名为 age 的属性,您可以按照年龄对这些对象进行排序,如下所示:

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

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

从上面的代码可以看出,第二个参数指定了要按照哪个属性进行排序。在这个例子中,我们选择按照年龄进行排序。

sortBy 多个属性

您还可以通过将多个属性名称传递给 sortBy 函数来对多个属性进行排序。例如,如果您有一个包含人员姓名和年龄的对象数组,您可以按照年龄和姓名对其进行排序,如下所示:

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

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

在这个例子中,我们传递了一个数组,其中包含要按顺序排序的属性名称。首先按照年龄排序,然后按照姓名进行排序。

reverse

reverse 函数将数组中的元素反转,并返回一个新的已反转数组。例如,如果您有一个数字数组,您可以使用 reverse 函数将其反转,如下所示:

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

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

在上面的代码中,我们将数字数组传递给 reverse 函数,它返回一个新的已反转的数组。

使用案例

让我们看一个更复杂的使用案例,该案例涉及多个函数和嵌套对象数组。假设您有一个带有学生名称、ID 和成绩的嵌套对象数组,并且您想要对该数组进行排序,以使得得分最高的学生排在列表的前面。此外,如果有两名或多名学生具有相同的得分,则按照 ID 进行排序,以便较早注册的学生排在前面。

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

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

在上面的代码中,我们使用 sortBy 和 chain 函数来处理嵌套对象数组。

首先,我们按照数学成绩进行排序,而不是按照英语成绩排序。这是因为如果出现得分相同的学生,则需要根据 ID 进行排序,而我们希望较高的数

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