Есть отличный метод для сортировки массива объектов на основе нескольких свойств:
var data = _.sortBy(array_of_objects, ['type', 'name']);
Однако это только для сортировки по возрастанию. Есть ли какой-нибудь удобный способ определения направления для каждого столбца? Например
var data = _.sortBy(array_of_objects, [{'type': 'asc'}, {'name': 'desc'}]);
javascript
sorting
lodash
nhaa123
источник
источник
_.sortByOrder is not a function
в последней версии Lodash., ['asc', 'desc']
часть просто игнорируется для меня с lodash@4.17.10. Все просто отсортировано по возрастанию._.sortBy
. Попробуй_.orderBy
вместо этого. Надеюсь это поможет.Вы всегда можете использовать
Array.prototype.reverse()
источник
Стоит отметить, что если вы хотите отсортировать определенные свойства по убыванию, вы не хотите просто добавлять .reverse () в конце, так как это приведет к сортировке всех сортировок по убыванию.
Чтобы сделать определенные сортировки по убыванию, объедините их в цепочку от наименее значимых до наиболее значимых, вызывая .reverse () после каждой сортировки, которую вы хотите убывать.
Поскольку сортировка _ является стабильной сортировкой, вы можете безопасно сортировать цепочки и выполнять обратную сортировку, потому что если два элемента имеют одинаковое значение для свойства, их порядок сохраняется.
Больше информации
источник
Глубокое поле и многополюсное расположение в разных направлениях Lodash> 4
источник
Нет. Вы не можете указать порядок сортировки, кроме как с помощью функции обратного вызова, которая инвертирует значение. Даже это не возможно для сортировки по нескольким столбцам.
Вы могли бы сделать
Для всего остального вам нужно прибегнуть к нативной функции
.sort()
с пользовательской функцией сравнения:источник
В документации версии 4.11.x говорится: `" Этот метод похож на _.sortBy, за исключением того, что он позволяет указывать порядки сортировки для итераторов для сортировки. Если порядки не указаны, все значения сортируются в порядке возрастания. В противном случае укажите порядок «desc» для убывания или «asc» для возрастания порядка сортировки соответствующих значений. » (источник https://lodash.com/docs/4.17.10#orderBy )
let sorted = _.orderBy(this.items, ['fieldFoo', 'fieldBar'], ['asc', 'desc'])
источник
_.sortByOrder
?Вы также можете попробовать это:
источник