2017-11-01 2 views
-1

다음과 같은 개체 배열이 있으며 product_id가 동일한 개체의 수량을 추가하고 싶습니다.개체 배열을 반복하고 동일한 ID를 가진 개체를 추가하십시오.

[ 
     { 
     "BARKOD": "Pa Detatime", 
     "DETAJIM1": "", 
     "DETAJIM2": "", 
     "DTMODIFIKIM": "2017-10-02T16:06:53.206Z", 
     "product_id": "SD13137", 
     "KODI": "MX02", 
     "KODNJESIA1": "cope", 
     "PERSHKRIMARTIKULLI": "Emporio Armani 4097 5574 71 56", 
     "cmimibaze": 0, 
     "quantity": 1 
     }, 
     { 
     "BARKOD": "Pa Detatime", 
     "DETAJIM1": "", 
     "DETAJIM2": "", 
     "DTMODIFIKIM": "2017-10-02T16:06:53.206Z", 
     "product_id": "SD13137", 
     "KODI": "MX03", 
     "KODNJESIA1": "cope", 
     "PERSHKRIMARTIKULLI": "Emporio Armani 4097 5574 71 56", 
     "cmimibaze": 0, 
     "quantity": 3 
     }, 
     { 
     "BARKOD": "Pa Detatime", 
     "DETAJIM1": "", 
     "DETAJIM2": "", 
     "DTMODIFIKIM": "2017-10-02T16:06:53.206Z", 
     "product_id": "SD13141", 
     "KODI": "MX02", 
     "KODNJESIA1": "cope", 
     "PERSHKRIMARTIKULLI": "Emporio Armani 4097 5574 71 56", 
     "cmimibaze": 0, 
     "quantity": 1 
     } 
    ] 

그래서 결국 배열은 다음과 같이해야한다 : 나는 다른 here과 함께이 질문을하지만 다른 질문을 해결할 수 있었다

[ 
     { 
     "BARKOD": "Pa Detatime", 
     "DETAJIM1": "", 
     "DETAJIM2": "", 
     "DTMODIFIKIM": "2017-10-02T16:06:53.206Z", 
     "product_id": "SD13137", 
     "KODI": "MX02", 
     "KODNJESIA1": "cope", 
     "PERSHKRIMARTIKULLI": "Emporio Armani 4097 5574 71 56", 
     "cmimibaze": 0, 
     "quantity": 4 
     }, 
     { 
     "BARKOD": "Pa Detatime", 
     "DETAJIM1": "", 
     "DETAJIM2": "", 
     "DTMODIFIKIM": "2017-10-02T16:06:53.206Z", 
     "product_id": "SD13141", 
     "KODI": "MX02", 
     "KODNJESIA1": "cope", 
     "PERSHKRIMARTIKULLI": "Emporio Armani 4097 5574 71 56", 
     "cmimibaze": 0, 
     "quantity": 1 
     } 
    ] 

. 누구든지 해결할 수 있다면 매우 감사 할 것입니다. 감사합니다.

+0

그러나 개체 1, 오브젝트 2에서 "KODI"속성은 각각 MX02과 MX03 있습니다 . 두 개체를 병합 하시겠습니까? – darthaditya

+0

@darthaditya 네, 그 부분은 중요하지 않습니다. MX02 또는 MX03으로 남겨 두어도 상관 없습니다. – Alfred

+0

[둘러보기]를 가지고 주변을 둘러보고 [도움]을 읽으십시오. 특히 * 좋은 질문을하는 방법 */(도움/방법 설명) 연구를 수행하십시오. 관련 주제에 대한 [검색] (/ help/searching). 작업을 시도하십시오. ** ** 당신이 붙어서 더 많은 조사와 검색을 한 후에 풀릴 수없는 경우, 시도의 [mcve]를 게시하고 어디서 붙어 있는지 구체적으로 말하십시오. –

답변

1

당신은 다음과 같이 감소 사용할 수 있습니다

let input = [{"BARKOD": "Pa Detatime","DETAJIM1": "","ETAJIM2": "","DTMODIFIKIM": "2017-10-02T16:06:53.206Z","product_id": "SD13137","KODI": "MX02","KODNJESIA1": "cope","PERSHKRIMARTIKULLI": "Emporio Armani 4097 5574 71 56","cmimibaze": 0,"quantity": 1},{"BARKOD": "Pa Detatime","DETAJIM1": "","DETAJIM2": "","DTMODIFIKIM": "2017-10-02T16:06:53.206Z","product_id": "SD13137","KODI": "MX03","KODNJESIA1": "cope","PERSHKRIMARTIKULLI": "Emporio Armani 4097 5574 71 56","cmimibaze": 0,"quantity": 3},{"BARKOD": "Pa Detatime","DETAJIM1": "","DETAJIM2": "","DTMODIFIKIM": "2017-10-02T16:06:53.206Z","product_id": "SD13141","KODI": "MX02","KODNJESIA1": "cope","PERSHKRIMARTIKULLI": "Emporio Armani 4097 5574 71 56","cmimibaze": 0,"quantity": 1}]; 
 

 
let output = input.reduce(function(res, el) { 
 
    if(res[el.product_id]) { 
 
    res[el.product_id].quantity += el.quantity; 
 
    } else { 
 
    res[el.product_id] = el; 
 
    } 
 
    return res; 
 
}, {}); 
 

 
let outputArr = Object.values(output); 
 

 
console.log(outputArr);
.as-console-wrapper { max-height: 100% !important; top: 0; }

0

var data = [{"BARKOD": "Pa Detatime", "DETAJIM1": "", "DETAJIM2": "", "DTMODIFIKIM": "2017-10-02T16:06:53.206Z", "product_id": "SD13137", "KODI": "MX02", "KODNJESIA1": "cope", "PERSHKRIMARTIKULLI": "Emporio Armani 4097 5574 71 56", "cmimibaze": 0, "quantity": 1 }, {"BARKOD": "Pa Detatime", "DETAJIM1": "", "DETAJIM2": "", "DTMODIFIKIM": "2017-10-02T16:06:53.206Z", "product_id": "SD13137", "KODI": "MX03", "KODNJESIA1": "cope", "PERSHKRIMARTIKULLI": "Emporio Armani 4097 5574 71 56", "cmimibaze": 0, "quantity": 3 }, {"BARKOD": "Pa Detatime", "DETAJIM1": "", "DETAJIM2": "", "DTMODIFIKIM": "2017-10-02T16:06:53.206Z", "product_id": "SD13141", "KODI": "MX02", "KODNJESIA1": "cope", "PERSHKRIMARTIKULLI": "Emporio Armani 4097 5574 71 56", "cmimibaze": 0, "quantity": 1 } ] 
 
var mapObj = {}; 
 
for(var a of data){ 
 
    if(mapObj[a["product_id"]]== undefined) 
 
     mapObj[a["product_id"]] = 0; 
 
    mapObj[a["product_id"]] += a["quantity"] 
 
} 
 
var data2 = []; 
 
for(var a of data){ 
 
    if(mapObj[a["product_id"]] == undefined) 
 
    continue; 
 
    a["quantity"] = mapObj[a["product_id"]]; 
 
    data2.push(a) 
 
    delete mapObj[a["product_id"]]; 
 
} 
 
console.log(data2)

관련 문제