我目前使用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对varchar数字列进行排序?
- 5. ASP Classic - 使用ASC和DESC进行列排序
- 6. 如何对泛型列表DESC和ASC进行排序?
- 7. 如何做第一级排序desc和第二级排序asc的嵌套注释?
- 8. jqgrid客户端排序desc/asc
- 9. 在Rails中实现排序ASC或DESC
- 10. PHP MYSQL - 按钮排序asc/desc
- 11. 在同一链接上对ASC和DESC进行排序
- 12. SSRS自定义排序一列ASC和DESC
- 13. 排序由XXX按ASC或DESC排序,动态排序,mysql ...
- 14. 如何运行查询以使用参数对列和asc/desc进行排序?
- 15. 如何对通用列表Asc或Desc进行排序?
- 16. 如何在Redis中使用“field1 desc,field2 asc”顺序创建排序集?
- 17. 使用SELECT进行排序下拉asc desc连接数据库
- 18. 使用Desc/Asc排序的Order By子句声明
- 19. PHP排序,而不使用ORDER BY DESC/ASC
- 20. 如何显示基于排序asc/desc的箭头(RoR 4)
- 21. JavaScript按年排序日期DESC,然后月ASC,然后一天ASC
- 22. 是什么在ASC和DESC
- 23. TokuDB在ASC和DESC之间的排序时间不同
- 24. Lodash - 在对象中排序对象(desc和asc)
- 25. Oracle动态DESC和ASC按顺序排列
- 26. SQL:按列排序,然后按子串混合asc和desc
- 27. Angular:按混合ASC和DESC属性列表排序
- 28. 如何使用Fluent API在ASC/DESC排序的多列上添加索引?
- 29. 对秩序的声明具有多个列和DESC/ASC条款排序
- 30. 如何同时在ASC和DESC的自定义字段中创建排序?
请添加您正在排序和如何排序的示例。 – Jon 2013-02-28 14:30:22
你在排序?数字?字符串?日期?还有别的吗? – 2013-02-28 19:00:11
@ muistooshort我正在排序一个对象数组。所以sortBy方法完全适合我的标准,而不是相反。 – Rahul 2013-03-01 04:49:01