2014-12-23 29 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/