📅  最后修改于: 2023-12-03 15:32:44.770000             🧑  作者: Mango
_.orderBy()
方法是 Lodash 库中的一个数组排序方法。它可以按照指定的属性或者函数对数组进行排序。本文将重点介绍该方法的用法及注意事项。
_.orderBy(array, [iteratees=[_.identity]], [orders])
方法接受三个参数:
array
(Array):需要排序的数组;iteratees
(Array|Function|Object|string):排序所需的属性或函数;orders
(Array|string):排序的方式,可以是 "asc" 或 "desc"。其中,iteratees
和 orders
参数可以是数组,用于指定多个排序条件。
示例代码如下:
const users = [
{ 'user': 'fred', 'age': 48 },
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 },
{ 'user': 'barney', 'age': 34 }
];
_.orderBy(users, ['user', 'age'], ['asc', 'desc']);
// => [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
以上示例代码中,使用 _.orderBy()
对 users
数组按照 user
属性进行升序排序,若出现相同的 user
属性,则按照 age
属性进行降序排序。
iteratees
参数为字符串时,排序将按照该字符串所代表的属性进行排序。iteratees
参数为一个函数时,需要遵循函数的返回值为可比较的规则。例如:const users = [
{ 'user': 'fred', 'age': 48 },
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 },
{ 'user': 'barney', 'age': 34 }
];
_.orderBy(users, user => user.user.toUpperCase(), 'desc');
// => [['fred', 48], ['fred', 40], ['barney', 36], ['barney', 34]]
以上示例代码中,使用 _.orderBy()
对 users
数组按照 user
属性的大小写进行排序(按照大写字母进行排序),再按照 desc
的方式进行排序。
orders
参数中,如果有一个元素为 null 或 undefined,则该元素将被视为升序排序。iteratees
为数组时,则 orders
须对应相应的排序顺序,否则默认都按照升序排序。_.orderBy()
方法是 Lodash 库中一个非常有用的数组排序方法。对象的属性可以是字符串、数字、函数等,可以灵活地进行排序处理。理解并熟练掌握该方法,可以提高代码的效率和可读性。