2014-12-23 54 views
-1

我有一個解釋:排序由underscore.js鍵

{ 
    abc : {id : 1}, 
    defg : {id : 2} 
} 

我想通過鍵長度使用underscore.js 輸出像排序詞典:

{ 
    defg : {id : 2}, 
    abc : {id : 1} 
} 

原型工作: http://jsfiddle.net/UCWL2/71/

+0

如果我的回答幫你,你會接受它。 –

+0

這已經只有10分鐘,給OP一些時間@RishiPrakash;)我會給你一個upvote,但! – kamituel

+0

@ kamituel哦,好的。我不會貪婪:) :) –

回答

2

字典,這是一個普通的JS對象,不能可靠地排序,因爲元素的順序沒有指定由ECMA Script 5規範。當然,你可能依賴於瀏覽器特定的行爲,但不能保證它是相同的瀏覽器,它們的版本等。

如果你需要排序的地圖,你會想要使用數組(但隨後你失去了日誌訪問的複雜性),或者某個第三方庫(即dsjslib)。

+0

只有一個問題,我沒有得到這些upvotes任何積分,你知道爲什麼會發生? –

+0

@RishiPrakash - 看來你今天已經達到了200個重要點 - 這是極限,恭喜! [請參閱文檔瞭解更多信息](http://stackoverflow.com/help/whats-reputation) – kamituel

+0

哦,我不知道這件事。謝謝 :) –

2
var avatars = [ 
    {idx: 102, userInfo: {buddy_name: 'Avatar102', is_online: 1}}, 
    {idx: 100, userInfo: {buddy_name: 'Avatar100', is_online: 1}}, 
    {idx: 101, userInfo: {buddy_name: 'Avatar101', is_online: 1}} 
]; 

avatars = _(avatars).sortBy(function(avatar) { 
    return -avatar.idx;// -ve is put in front of variable to sort in desc i.e reverse direction 
}); 
console.log(JSON.stringify(avatars)); 

只需替換return avatar.idx; //。userInfo.buddy_name;通過返回-avatar.idx; //。userInfo.buddy_name;它扭轉了結果。

工作的jsfiddle:http://jsfiddle.net/0Lb44h96/