📜  Lodash _.orderBy() 方法(1)

📅  最后修改于: 2023-12-03 15:32:44.770000             🧑  作者: Mango

Lodash _.orderBy() 方法

_.orderBy() 方法是 Lodash 库中的一个数组排序方法。它可以按照指定的属性或者函数对数组进行排序。本文将重点介绍该方法的用法及注意事项。

用法

_.orderBy(array, [iteratees=[_.identity]], [orders]) 方法接受三个参数:

  • array (Array):需要排序的数组;
  • iteratees (Array|Function|Object|string):排序所需的属性或函数;
  • orders (Array|string):排序的方式,可以是 "asc" 或 "desc"。

其中,iterateesorders 参数可以是数组,用于指定多个排序条件。

示例代码如下:

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 库中一个非常有用的数组排序方法。对象的属性可以是字符串、数字、函数等,可以灵活地进行排序处理。理解并熟练掌握该方法,可以提高代码的效率和可读性。