可以使用 Array.sort()
方法来排序,对于多字段排序,我们可以通过比较两个对象的不同字段,来实现排序。排序方法如下:
function sortByMultipleFields(arr) { return arr.sort((a, b) => { if (a.name < b.name) { return -1; } else if (a.name > b.name) { return 1; } else { return b.age - a.age; } }); }
解释说明:
首先使用 sort()
方法对数组进行排序,该方法需要传入一个比较函数,函数将比较两个值,并返回一个表示它们之间关系的数字:
- 如果 a 小于 b,则返回小于零的数字。
- 如果 a 等于 b,则返回零。
- 如果 a 大于 b,则返回大于零的数字。
由于我们需要对两个字段进行排序,首先按照 name
进行升序排序,如果 name
字段相等,则按 age
进行降序排序。因此,我们可以使用多个 if/else 语句进行排序。
完整代码如下:
const arr = [ { name: "John", age: 32 }, { name: "Jane", age: 24 }, { name: "John", age: 45 }, { name: "Adam", age: 19 }, ]; function sortByMultipleFields(arr) { return arr.sort((a, b) => { if (a.name < b.name) { return -1; } else if (a.name > b.name) { return 1; } else { return b.age - a.age; } }); } console.log(sortByMultipleFields(arr));
输出结果如下:
[ { name: "Adam", age: 19 }, { name: "Jane", age: 24 }, { name: "John", age: 45 }, { name: "John", age: 32 }, ]