2013-06-05 3 views
1

JSON 배열에 중첩 된 개체 결합 :아래, 나는 중첩 된 객체와 JSON 배열이

var cData = [{ 
    "name": "Jack Doe", 
    "desc": "Jack", 
    "values": [{ 
     "id": "615", 
     "subject": "Physics", 
     "Grade": "B" 
    }, { 
     "id": "616", 
     "subject": "Chemistry", 
     "Grade": "A" 
    }] 
}, 
{ 
    "name": "Jane Doe", 
    "desc": "Jane", 
    "values": [{ 
     "id": "715", 
     "subject": "Maths", 
     "Grade": "A+" 
    }] 
}, 
{ 
    "name": "Jack Doe", 
    "desc": "Jack", 
    "values": [{ 
     "id": "617", 
     "subject": "Maths", 
     "Grade": "A" 
    }] 
}, 
{ 
    "name": "Jane Doe", 
    "desc": "Jane", 
    "values": [{ 
     "id": "716", 
     "subject": "Physics", 
     "Grade": "B" 
    }] 
}] 

내가 어떤 사람이 어떤이있는 경우

var cData = [{ 
    "name": "Jack Doe", 
     "desc": "Jack", 
     "values": [{ 
     "id": "615", 
      "subject": "Physics", 
      "Grade": "B" 
    }, { 
     "id": "616", 
      "subject": "Chemistry", 
      "Grade": "A" 
    }, { 
     "id": "617", 
      "subject": "Maths", 
      "Grade": "A" 
    }] 
}, 

{ 
    "name": "Jane Doe", 
     "desc": "Jane", 
     "values": [{ 
     "id": "715", 
      "subject": "Maths", 
      "Grade": "A+" 
    }, { 
     "id": "716", 
      "subject": "Physics", 
      "Grade": "B" 
    }] 
}] 

에 위의 배열에서 개체를 통합하려는 나를 위해 제안은 정말로 컸을 것이다! jQuery 메서드도 환영합니다.

+1

지금까지 어떤 시도를하셨습니까? 또한 이름 필드 또는 설명 필드를 기반으로 레코드를 병합하려고하십니까? 다른 필드의 차이점을 어떻게 처리해야합니까? –

+0

내가 잘못하지 않았다면 같은 "이름"을 참조하여 개체를 병합 하시겠습니까? – pvnarula

답변

1

키 아래에 개체 배열을 병합 한 다음지도 값을 가져 오는 함수를 작성해야합니다. 여기입니다

병합 기능 : 객체

function mergeArray(array) { 
    var merged = {}; 
    $.each(array, function() { 
     var item = this; 
     // Use name as a key 
     if (typeof merged[item.name] != 'undefined') { 
      // merge values array 
      $.merge(merged[item.name].values, item.values); 
     } 
     else { 
      merged[item.name] = item; 
     } 
    }); 
    // get values from { key1: value1, key2: value2, ... } object 
    return getObjectValues(merged); 
} 

얻기 값 : 여기

function getObjectValues(obj) { 
    var values = []; 
    $.each(obj, function(key,valueObj){ 
     values.push(valueObj); 
    }); 
    return values; 
} 

working example이다.

+1

위대한, 내 프로그램에 이것을 포함했을 때 완벽하게 작동합니다. 나는이 지난 이틀 동안 일할 수 없었다. 빠른 해결책을 가져 주셔서 대단히 감사합니다. – AnuNag