lodash 多列排序

2022-08-30 01:31:35

有一个漂亮的方法可以根据几个属性对对象数组进行排序:

var data = _.sortBy(array_of_objects, ['type', 'name']);

但是,这仅用于升序排序。有没有一些方便的方法来定义每列的方向?例如:

var data = _.sortBy(array_of_objects, [{'type': 'asc'}, {'name': 'desc'}]);

答案 1

lodash 3.5.0 开始,您可以使用 sortByOrder(在 v4.3.0 中重命名 orderBy):

var data = _.sortByOrder(array_of_objects, ['type','name'], [true, false]);

版本3.10.0开始,您甚至可以使用标准语义进行排序(asc,desc):

var data = _.sortByOrder(array_of_objects, ['type','name'], ['asc', 'desc']);

在 lodash 的版本 4 中,此方法已重命名为 orderBy

var data = _.orderBy(array_of_objects, ['type','name'], ['asc', 'desc']);

答案 2

您可以随时使用Array.prototype.reverse()

var data = _.sortBy(array_of_objects, ['type', 'name']).reverse();