我目前使用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