我目前使用underscorejs来排序我的json排序。现在我要求使用underscore.js进行排序ascending
和descending
。在文档中我没有看到任何相同的内容。我怎样才能做到这一点?我如何使用underscore.js做一个asc和desc排序?
回答
您可以使用.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;
});
最后的解决方案,即添加negetive符号返回数量是完美的。 – vinesh 2014-11-14 22:03:04
你为什么认为这是泡沫排序?在''.sortBy()'调用内置的'Array.sort()'之下,其算法取决于浏览器供应商,但冒泡排序不太可能是他们的选择。 – 2015-12-11 19:38:09
这不会增加时间复杂度吗?它会导致列表排序两次。 – user1477388 2016-04-21 16:21:35
使用下划线降序可以通过-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()方法得到的Unicode值。
//Descending Order Strings:
_.sortBy(['a', 'b', 'c'], function(s){
return s.charCodeAt() * -1;
});
的Array prototype's reverse method修改数组,并返回对它的引用,这意味着你可以这样做:
var sortedAsc = _.sortBy(collection, 'propertyName');
var sortedDesc = _.sortBy(collection, 'propertyName').reverse();
而且,下划线文档读取:
此外, Array prototype's methods通过链接的下划线对象代理,因此您可以将
reverse
或push
滑入您的链中,并继续修改该数组。
,这意味着你还可以使用.reverse()
同时链接:
var sortedDescAndFiltered = _.chain(collection).sortBy('propertyName').reverse().filter(_.property('isGood')).value();
在最简单的用例中,这是通过反向/降序排序的最简单方法。 – 2015-09-08 12:57:55
要做一个不区分大小写的字母排序:'_.sortBy(collection,item => item。propertyName.toLowerCase());' – 2016-09-06 01:27:49
如果数组中有负数,这不起作用。 – 2016-11-14 20:28:18
强调图书馆类似的还有被称为有一个方法“排序依据”这需要在参数来确定“lodash”另一个库以何种顺序排序。你可以使用它像
_.orderBy('collection', 'propertyName', 'desc')
由于某种原因,它没有记录在网站上的文档。
我觉得你把[下划线](http://underscorejs.org/)与[lodash](https://lodash.com/)混淆了。只有后者才提到[orderBy函数](https://lodash.com/docs/latest#orderBy)。 – 2017-07-02 12:28:53
是的,我的坏。将更新答案。谢谢纠正:) – 2017-07-03 06:40:56
'orderBy',超好用!比使用反转要好得多,因为它保留了我正在寻找的稳定排序属性。 – Flimm 2017-08-02 14:09:43
- 1. MySQL的排序DESC和ASC
- 2. php&wordpress ASC/DESC使用href和排序
- 3. dataTable的多列排序与“ASC”和“DESC”
- 4. 如何对泛型列表DESC和ASC进行排序?
- 5. 在Rails中实现排序ASC或DESC
- 6. PHP MYSQL - 按钮排序asc/desc
- 7. 排序由XXX按ASC或DESC排序,动态排序,mysql ...
- 8. 如何运行查询以使用参数对列和asc/desc进行排序?
- 9. 如何对通用列表Asc或Desc进行排序?
- 10. 使用Desc/Asc排序的Order By子句声明
- 11. 使用SELECT进行排序下拉asc desc连接数据库
- 12. 是什么在ASC和DESC
- 13. SQL:按列排序,然后按子串混合asc和desc
- 14. Lodash - 在对象中排序对象(desc和asc)
- 15. Oracle动态DESC和ASC按顺序排列
- 16. 如何使用Fluent API在ASC/DESC排序的多列上添加索引?
- 17. 对秩序的声明具有多个列和DESC/ASC条款排序
- 18. 如何在Rails中对多个(ASC和DESC)字段进行排序或排序全文搜索?
- 19. 在.NET中是否存在用于Asc或Desc排序的Enum?
- 20. sort asc desc php,mysql
- 21. PHP MySQL排序顺序ASC/DESC只显示记录
- 22. MySQL订单不使用ASC或DESC
- 23. 在ORDER BY CASE中使用ASC/DESC()
- 24. 使用ASC或DESC命令的主键?
- 25. 如何订购2个SQL字段在asc和desc动态
- 26. 如果我创建一个Postgres索引,ASC和DESC有什么区别?
- 27. 根据其他表的值排序MySQL查询ASC或DESC
- 28. 手动排序concat文本(不是ASC或DESC)
- 29. MySQL - 按某种不是ASC或DESC的顺序排列
- 30. Python Sorted:按值排序字典(DESC),然后按键(ASC)
请添加您正在排序和如何排序的示例。 – Jon 2013-02-28 14:30:22
你在排序?数字?字符串?日期?还有别的吗? – 2013-02-28 19:00:11
@ muistooshort我正在排序一个对象数组。所以sortBy方法完全适合我的标准,而不是相反。 – Rahul 2013-03-01 04:49:01