2012-08-07 1 views
0

알파벳 순서 ("이름"값)를 유지하면서 "그룹"값으로 개체를 정렬/그룹화하려면 어떻게합니까?알파벳 순서 (다른 속성 값)를 유지하면서 하나의 속성 값으로 연관 배열을 정렬하는 방법은 무엇입니까?

예. 그래서, 이름을 비교한다면

[{ 
     name:'A' 
     group:'a', 
    }, 
    { 
     name:'A' 
     group:'b', 
    }, 
    { 
     name:'B' 
     group:'a', 
    }, 
    { 
     name:'B' 
     group:'b' 
    }] 

전에

[{ 
     name:'A' 
     group:'a', 
    }, 
    { 
     name:'B' 
     group:'a', 
    }, 
    { 
     name:'A' 
     group:'b', 
    }, 
    { 
     name:'B' 
     group:'b' 
    }] 

답변

1

확인 후 그룹은 동일합니다. 그룹이 동일하지 않으면 그룹을 비교하십시오.

var a = [{ 
    name: 'A', 
    group: 'a' 
}, { 
    name: 'A', 
    group: 'b' 
}, { 
    name: 'B', 
    group: 'a' 
}, { 
    name: 'B', 
    group: 'b' 
}] 

a.sort(function(a, b) { 
    return a.group.localeCompare(b.group) === 0 ? 
      a.name.localeCompare(b.name) : /*groups are equal, compare names*/ 
      a.group.localeCompare(b.group); /* groups are not equal, compare groups*/ 
}); 
+0

문자열 값을 비교하는 연산자 대신'.localeCompare'를 사용하는 것이 좋습니다. 일단 convinients에 대한, 두 번째 그것은 훨씬 더 특정 브라우저에서 수행합니다. http://jsperf.com/operator-vs-localcompare – jAndy

+0

@jAndy 오, 그래 잊어 버렸어. 고맙습니다. 왜 더 이상 채팅하지 않습니까? : P – Esailija

+0

누가 시간을 가지고 ... 누가 시간이 .... : p하지만 주위에있을거야 – jAndy

관련 문제