2016-08-11 3 views
0

다른 객체에 asign, Y는이 배열이 있습니다추출 특성은 다음 내가 여기에 약간의 도움이 필요

[ 
    {Code:13938, Country:699, Name:"Crocs", codeProduct:1} 
    {Code:13952, Country:699, Name:"Polo Club", codeProduct:14} 
    {Code:13952, Country:699, Name:"Polo Club", codeProduct:1} 
    {Code:13952, Country:699, Name:"Polo Club", codeProduct:3} 
    {Code:13953, Country:699, Name:"OZ", codeProduct:12} 
    .... 
] 

을 그리고 나는이 변환해야합니다

[ 
    {Code:13938, Country:699, Name:"Crocs", codeProduct:1} 
    {Code:13952, Country:699, Name:"Polo Club", codeProduct:"14, 1, 3" } 
    {Code:13953, Country:699, Name:"Polo Club", codeProduct:12} 
] 

I 중복 된 객체를 제거하고 해당 객체의 값을 가져 오는 데 아무런 문제가 없습니다.

var prodArray = []; 

function uniq_fast(a) { 
    var seen = {}; 
    var out = []; 
    var len = a.length; 
    var j = 0; 
    for(var i = 0; i < len; i++) { 
    var item = a[i].Codigo; 
    if(seen[item] !== 1) { 
      seen[item] = 1; 
      out[j++] = a[i]; 
    }else{ 
     prodArray.push({Code:item, codeProduct:a[i].TipoProductoCodigo}); 
    } 
    } 
     return out; 
    } 

이 삭제 된의 속성을 값을 repited하여 새 배열 prodArray에 추가 whitout 객체의 새로운 배열을 반환합니다.

// out return this: 
[ 
    {Code:13938, Country:699, Name:"Crocs", codeProduct:1} 
    {Code:13952, Country:699, Name:"Polo Club", codeProduct:"14, 1, 3" } 
    {Code:13953, Country:699, Name:"Polo Club", codeProduct:12} 

]

prodArr 반환이 :

[ 
    {Code:13952, codeProduct:1} 
    {Code:13952, codeProduct:3} 
] 

하지만 난이 중복 된 개체를 보유하지 않는 새로운 배열에 prodArray의 속성을 설정하는 방법?

희망 나는,

그래서 당신이 prodArray에 중복 값을 가지고 ... 큰

+0

꽤 일관성이 보인다 ... 당신은 문자열 목록 또는 하나의 숫자 중 하나를 포함 할 수있는 특성이있을 것이다. –

+0

복제본을 prodArray로 이동 했으므로 다시 추가하고 싶습니까? –

+1

최종 질문이 이해가 안됩니다 –

답변

1

Code에 대한 참조로 해시 테이블을 사용할 수 있습니다.

var data = [{ Code: 13938, Country: 699, Name: "Crocs", codeProduct: 1 }, { Code: 13952, Country: 699, Name: "Polo Club", codeProduct: 14 }, { Code: 13952, Country: 699, Name: "Polo Club", codeProduct: 1 }, { Code: 13952, Country: 699, Name: "Polo Club", codeProduct: 3 }, { Code: 13953, Country: 699, Name: "OZ", codeProduct: 12 }], 
 
    grouped = []; 
 

 
data.forEach(function (a) { 
 
    if (!this[a.Code]) { 
 
     this[a.Code] = { Code: a.Code, Country: a.Country, Name: a.Name, codeProduct: a.codeProduct }; 
 
     grouped.push(this[a.Code]); 
 
     return; 
 
    } 
 
    this[a.Code].codeProduct += ', ' + a.codeProduct; 
 
}, Object.create(null)); 
 
console.log(grouped);

+0

대단히 감사합니다. 니나!. – Mauro

1

나는 완전히 당신이하려고하는지 이해하지 않고이 답변을 위해 최선을 노력 할게요 명확했다. 이제 방금 에 방금 배치 한 배열에 넣으시겠습니까? 확실한. 배열 끝에 요소를 추가하려면 push 메서드를 사용합니다.

내가 잡은 것은 JSON 속성이 누락 된 것 (CountryName)을 다시 채우고 prodArray의 요소에 다시 추가한다고 가정합니다. 그러나 Code이 동일하다는 것을 알고 있으므로이를 사용하여 누락 된 값을 찾을 수 있습니다. 그래서 여기 a는 원래의 배열은 가정, 내가 그것을 할 거라고 방법이다 그건 : 나는 닫습니다

for (var i in prodArray) { 

    // find the duplicate in the orginal array 
    for (var j in a) { 

     if (a[j].Code == prodArray[i].Code) { 

      // found it, now append into a 
      a.push(a[j]); 
      break; 

     } 

    } 

} 

있습니까?

+0

답장을 보내 주셔서 대니 감사합니다. 미안합니다. – Mauro

관련 문제