В настоящее время я использую underscorejs для сортировки сортировки json. Теперь я попросил сделать сортировку ascending
и descending
, используя underscore.js. Я не вижу ничего подобного в документации. Как я могу это достичь?Как я могу сортировать asc и desc, используя underscore.js?
ответ
Вы можете использовать .sortBy
, он всегда будет возвращать восходящий список:
_.sortBy([2, 3, 1], function(num) {
return num;
}); // [1, 2, 3]
Но вы можете использовать метод .reverse, чтобы получить его убыванию:
var array = _.sortBy([2, 3, 1], function(num) {
return num;
});
console.log(array); // [1, 2, 3]
console.log(array.reverse()); // [3, 2, 1]
Или когда дело с цифрами добавить отрицательный знак к возврату, чтобы перейти из списка:
_.sortBy([-3, -2, 2, 3, 1, 0, -1], function(num) {
return -num;
}); // [3, 2, 1, 0, -1, -2, -3]
Под капотом .sortBy
использует встроенный в .sort([handler])
:
// Default is ascending:
[2, 3, 1].sort(); // [1, 2, 3]
// But can be descending if you provide a sort handler:
[2, 3, 1].sort(function(a, b) {
// a = current item in array
// b = next item in array
return b - a;
});
Последнее решение, то есть добавление замедленного знака в возвращаемое число, является совершенным. – vinesh
Почему вы думаете, что это пузырь? Под капотом '.sortBy()' вызывает встроенный 'Array.sort()', алгоритм которого зависит от поставщиков браузеров, но выбор пузырьков вряд ли будет их выбором. –
Разве это не увеличивает временную сложность? Это приводит к сортировке списка дважды. – user1477388
убывающего порядок, используя подчеркивание может быть сделано путем умножения возвращаемого значения на -1.
//Ascending Order:
_.sortBy([2, 3, 1], function(num){
return num;
}); // [1, 2, 3]
//Descending Order:
_.sortBy([2, 3, 1], function(num){
return num * -1;
}); // [3, 2, 1]
Если вы не сортировать по строкам чисел, вы можете использовать метод charCodeAt(), чтобы получить значение Юникода.
//Descending Order Strings:
_.sortBy(['a', 'b', 'c'], function(s){
return s.charCodeAt() * -1;
});
Я пытаюсь сортировать по алфавиту - умножение на -1 не действительная операция. :) – rythos42
Его стоит использовать, но не указан в вопросе. Однако умножение строки на -1 является действительной операцией. Он возвращает NaN, что является допустимым результатом. – jEremyB
+1, чтобы избежать операции 'array.reverse' –
Array prototype's reverse method изменяет массив и возвращает ссылку на него, а это означает, что вы можете сделать это:
var sortedAsc = _.sortBy(collection, 'propertyName');
var sortedDesc = _.sortBy(collection, 'propertyName').reverse();
Кроме того, документация Подчеркивание гласит:
Кроме того, Array prototype's methods проксируются через связанный объект Underscore, поэтому вы можете пропустить
reverse
илиpush
в свою цепочку и продолжить изменять массив.
означает, что вы можете также использовать .reverse()
в то время как цепочки:
var sortedDescAndFiltered = _.chain(collection).sortBy('propertyName').reverse().filter(_.property('isGood')).value();
Это самый простой способ сортировки по обратному/нисходящему типу, когда дело доходит до большинства простых случаев использования. –
Сделать регистр без учета регистра в алфавитном порядке: '_.sortBy (collection, item => item. PropertyName.toLowerCase());' –
это не работает, если в массиве есть отрицательные числа. –
Подобно Подчеркиваем библиотеки есть другая библиотека называется «lodash», который имеет один метод «OrderBy», который принимает в параметре, чтобы определить, в каком порядке его сортировать. Вы можете использовать его как
_.orderBy('collection', 'propertyName', 'desc')
По какой-то причине он не задокументирован на документах веб-сайта.
Я думаю, вы смутили [подчеркивание] (http://underscorejs.org/) с помощью [lodash] (https://lodash.com/). Только последняя имеет упомянутую [функцию orderBy] (https://lodash.com/docs/latest#orderBy). –
Да, мой плохой. Будет обновлен ответ. Спасибо за исправление :) –
'orderBy', супер полезно! Гораздо лучше, чем использование reverse, поскольку оно сохраняет стабильное свойство сортировки, которое я ищу. – Flimm
- 1. Как я могу сортировать общий список DESC и ASC?
- 2. DataTables сортировать по-разному asc/desc
- 3. Сортировать записи; будущее ASC, мимо DESC
- 4. сортировать список по ASC или DESC
- 5. Угловая: Сортировать по списку свойств со смешанными ASC и DESC
- 6. Сортировать по Asc и Desc как в одном запросе
- 7. dynamic asc desc sort
- 8. Как я могу сортировать или заказывать полнотекстовый поиск с несколькими полями (ASC и DESC) в Rails?
- 9. Lodash - сортировать объекты в объекте (desc и asc)
- 10. DESC и ASC как параметр хранимой процедуры
- 11. MySql CAST и ASC/DESC
- 12. Сортировка Woocommerce ASC и DESC по категории
- 13. MySQL Условный ASC/DESC
- 14. Сортировать по дате ASC, но DESC в группе
- 15. Точность сортировки TokuDB между ASC и DESC
- 16. Заказ MySQL по DESC висит; ASC отлично
- 17. SQL сортировка по asc/desc
- 18. Заказ MySQL Без использования ASC или DESC
- 19. Отсортировать отставание JIRA по билетам # asc/DESC?
- 20. сортировка пользовательских gridview ASC и DESC
- 21. iPhone sqlite desc vs asc?
- 22. Mysql rank, asc или desc
- 23. Oracle dynamic DESC и ASC в порядке
- 24. Порядок MySQL по ASC и DESC в том же столбце
- 25. PHP MYSQL - Button to SORT asc/desc
- 26. Сортировать результаты ASC запроса
- 27. Позволяет упорядочить столбцы таблицы по DESC/ASC?
- 28. Как сортировать по нескольким полям desc и asc для весенних данных в Интернете?
- 29. Реализация сортировки ASC или DESC в Rails
- 30. ASP Classic - сортировка столбцов с ASC и DESC
Пожалуйста, добавьте пример того, что вы сортируете и как. – Jon
Что вы сортируете? Числа? Строки? Сроки? Что-то другое? –
@muistooshort Я сортирую массив объектов. Поэтому метод sortBy отлично подходит для моих критериев для восходящего сортировки, но не наоборот. – Rahul