在前端开发中,我们经常需要根据多个字段对对象数组进行排序。例如,在电商网站上,我们可能需要按价格和销量对商品列表进行排序。本文将介绍如何使用 JavaScript 中的 Array.sort()
方法来实现多字段排序。
一、基本用法
Array.sort()
方法是 JavaScript 内置的排序方法,它可以对数组进行原地排序,即修改原始数组而不创建新的数组。该方法接受一个可选的比较函数作为参数,用于指定排序的规则。
比较函数有两个参数,分别代表要比较的两个元素。如果第一个元素应排在第二个元素之前,则返回一个负数;如果第一个元素应排在第二个元素之后,则返回一个正数;如果两个元素相等,则返回 0。
下面是一个简单的例子,演示如何按数字大小对数组进行排序:
----- --- - --- -- -- -- -- -- -- -- -- --- ------------ -- -- - - --- ----------------- -- --- -- -- -- -- -- -- -- -- --
二、多字段排序
对于对象数组,我们可以使用比较函数来对数组进行排序。假设我们有一个包含学生信息的数组,每个学生对象有 name
、age
和 score
三个字段,我们需要先按照分数从高到低排序,再按照年龄从小到大排序,最后按照姓名字典序排序。可以这样实现:
----- -------- - - - ----- -------- ---- --- ------ -- -- - ----- ------ ---- --- ------ -- -- - ----- ---------- ---- --- ------ -- -- - ----- -------- ---- --- ------ -- -- - ----- ------ ---- --- ------ -- - -- ----------------- -- -- - -- -------- --- -------- - ------ ------- - -------- -- ---------- - ---- -- ------ --- ------ - ------ ----- - ------ -- ----------------- - ---- - ------ ----------------------------- -- ----------------- - --- ----------------------
输出结果为:
- - ----- ------ ---- --- ------ -- -- - ----- ------ ---- --- ------ -- -- - ----- -------- ---- --- ------ -- -- - ----- -------- ---- --- ------ -- -- - ----- ---------- ---- --- ------ -- - -
三、关键字排序
在实际开发中,我们可能需要对某个字段进行排序,但是该字段可能是一个对象,而不是一个简单类型。例如,我们有一个包含商品信息的数组,每个商品对象有 name
、price
和 category
三个字段,其中 category
是一个包含 id
和 name
两个字段的对象。如果我们要按照商品分类、价格从低到高的顺序排序,可以这样实现:
----- -------- - - - ----- --------- ------ ----- --------- - --- -- ----- ---- - -- - ----- ------- ------ ----- --------- - --- -- ----- ------ - -- - ----- -------- ----- ------ ------ --------- - --- -- ----- ------- - -- - ----- ------ ------- - ----------------------------------------------------------- -------- ---------------------------------------------------------------------------------------