2012-12-18 6 views
2

개체 배열이 있습니다. 나는 underscore.js를 사용하여 각 객체를 각각의 값으로 정렬하려고합니다.컬렉션을 값으로 정렬하려면 어떻게해야합니까?

var myArray = [ 
    {a:1, b:2, c:2}, 
    {a:1, b:3, c:2}, 
    {a:3, b:2, c:1}, 
    {a:1, b:1, c:4}, 
    {a:1, b:2, c:4}, 
]; 

내가 행운이 방법을 시도했습니다 ...

var myArray = [ 
    {a:1, b:2, c:2}, 
    {a:1, c:2, b:3}, 
    {c:1, b:2, a:3}, 
    {a:1, b:1, c:4}, 
    {a:1, b:2, c:4}, 
]; 

나는이 방법을 사용하여 노력하고있어.

_.each(myArray, function(obj) { 
    _(obj).sortBy(function(val, key) { 
     return val; 
    }); 

});

다음은 객체의 속성을 정렬 할 수 없습니다 내 바이올린 http://jsfiddle.net/rsturim/wNLkX/

+2

이것은 [XY 문제 (HTTP 수있다 : // meta.stackexchange.com/questions/66377/what-is-the-xy-problem). 장기적으로 당신은 무엇을하려고합니까? 객체는 순서에 대한 의식이 없으므로 위에 묻는 것은 실제로 불가능합니다. – Dancrumb

답변

5

입니다. 개체의 속성에는 특정 순서가 없습니다.

루프를 통과 할 때 속성이 반환되는 순서는 구현에 따라 다르며 브라우저마다 다릅니다.

2

이미 언급했듯이 Javascript에서는 속성을 정렬 할 수 없습니다. 그러나 할 수있는 일은 정렬 정보를 별도의 배열에 보관하는 것입니다.

  1. 개체의 키만 포함하는 배열을 만듭니다.
  2. 정렬하여 정렬 된 키 배열을 반복하여
  3. 통로를 원래의 객체에서 정렬 된 순서 값을 값을 확인 크로스에 의한 배열
관련 문제