2013-07-17 4 views
2

지난 12 개월 동안 내 모델 "myModel"의 스냅 샷을 반환하는 웹 API 서비스를 호스팅합니다. 내 고객에게받는 json 배열은 12 개의 "myMydel"객체로 이루어진 간단한 배열입니다.모델 배열의 피벗 json 데이터

내가 싶습니다 myModel는 속성 "foo에"와 "바"를 갖는 경우

속성의 어레이의 집합으로 이어질 어레이를 피봇 자바 스크립트에서의 효율적인 방법은 예컨대 존재 내가 imple 열려입니다

history{ 
    "1"{ //key 
     foo[] 
     foo[0]: 1 
     foo[1]: 3 
     bar[] 
     bar[0]: 2 
     bar[1]: 4 
     } 
    } 

history{ 
    myModel[] 
    myModel[0] 
     foo: 1 
     bar: 2 
     Key: 1 
    myModel[1] 
     foo: 3 
     bar: 4 
     Key: 1 
} 

변환 그게 더 효율적이라면 서버 측에서 멘토를 붙입니다. 내 API 서비스는 .NET 4.5 Web API입니다.

다시. 내 질문은 거기 자바 스크립트에서 이러한 결과를 달성하는 매우 효율적인 방법은 무엇입니까? 그렇지 않다면 C#에 하나 있습니까? 누군가 간단한 예제 코드를 제공하여 나를 보낼 수 있습니까?

도움을 많이 받으실 수 있습니다. 감사!

편집 : 작업 코드 나는이 아래로 선정됐다하더라도

, 난 내가 이것을 달성 자바 스크립트의 작업 예제를 제공하는 것입니다 그림. 너무 빠릅니다. 각 기록 목록에는 레코드를 그룹화 할 수있는 키가 있어야합니다.

_pivot = function(history) { 
    var i, pivoted, prop, rec; 
    pivoted = {}; 
    if (history !== null) { 
     i = 0; 
     while (i < history.length) { 
     rec = history[i]; 
     pivoted[rec.Key] = pivoted[rec.Key] || {}; 
     for (prop in rec) { 
      pivoted[rec.Key][prop] = pivoted[rec.Key][prop] || []; 
      if (!pivoted[rec.Key][prop].date) { 
      pivoted[rec.Key][prop].push({ 
       value: rec[prop] 
      }); 
      } 

     } 
     i++; 
     } 
     return pivoted; 
    } 
    return null; 
    }; 

답변

1

글쎄, 지금까지와 같은 슈퍼 효율적으로, 나는 당신이 당신의 부하 모델을 변경하지 않는 한, 당신은 당신의 모델을 반복하는 서버 측 또는 클라이언트 측을 가지고 있고 다른 배열에 각 속성을 할당하려고 생각 .

var tempFoo = newArray(); tempBar = newArray(); 
for (var i = 0; i < myModel.length; i++){ 
    tempFoo.push(myModel[i].foo); 
    tempBar.push(myModel[i].bar); 
} 

또한 당신이있는 경우에, 당신의 서버 측 코드 정렬, 또는 단지 자동에서 당기는 어떤 데이터베이스에서 정렬 된 경우에는 속도가 증가를 볼 수 있습니다. Why is it faster to process a sorted array than an unsorted array?

호프가 도움이 되었으면 좋겠습니다. 예는 자바 스크립트입니다.

V/R