2014-12-23 3 views
-1

나는 1 개 개의 사전을 가지고 :정렬은

내가 출력처럼 underscore.js를 사용하여 키 길이로 사전을 정렬 할
{ 
    abc : {id : 1}, 
    defg : {id : 2} 
} 

:

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

프로토 타입 작업 : http://jsfiddle.net/UCWL2/71/

+0

내 대답이 도움이 되었다면 받아 들일 수 있습니다. –

+0

10 분 밖에 안 남았습니다. OP에 약간의 시간을 주셨습니다 @RishiPrakash;) 나는 당신에게 upvote를 줄 것이다! – kamituel

+0

@kamituel Oh, Ok. 나는 욕심을 느끼지 않을 것이다 :) :) –

답변

2

요소의 순서가 지정되지 않았으므로 일반 JS 개체 인 사전을 안정적으로 정렬 할 수 없습니다. ECMA Script 5 사양. 물론 브라우저 별 동작에 의존 할 수도 있지만 브라우저, 버전 등이 동일하지는 않습니다.

정렬 된지도가 필요하면 배열을 사용해야합니다. 당신은 log (n) access complexity를 잃는다.) 또는 그것을위한 제 3의 라이브러리 (즉, dsjslib).

+0

단지 하나의 질문, 나는 이러한 upvotes에 대한 포인트를 얻지 못했는데, 당신은 왜 그런 일이 일어날 지 알고 있습니까? –

+0

@RishiPrakash - 오늘 200 포인트를 얻은 것 같습니다. 그게 한계입니다, 축하합니다! [더 많은 정보를 원하시면 doc을 보시라.] – 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; return by -avatar.idx; //. userInfo.buddy_name; 결과를 반전시킵니다.

작동 내역 : http://jsfiddle.net/0Lb44h96/