Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript의 JSON에서 유사한 항목 그룹화

<시간/>

다음과 같은 일부 티켓에 대한 데이터가 포함된 JSON 배열이 있다고 가정합니다.

const arr = [
   {
      "quantity": "1",
      "description": "VIP Ticket to Event"
   },
   {
      "quantity": "1",
      "description": "VIP Ticket to Event"
   },
   {
      "quantity": "1",
      "description": "VIP Ticket to Event"
   },
   {
      "quantity": "1",
      "description": "Regular Ticket to Event"
   },
   {
      "quantity": "1",
      "description": "Regular Ticket to Event"
   },
];

그러한 배열을 취하는 JavaScript 함수를 작성해야 합니다. 함수는 유사한 개체를 함께 그룹화하고 수량 속성을 요약해야 합니다.

"description" 속성 값이 동일한 경우 두 개체가 고려됩니다.

예시

이에 대한 코드는 -

const arr = [
   {
      "quantity": "1",
      "description": "VIP Ticket to Event"
   },
   {
      "quantity": "1",
      "description": "VIP Ticket to Event"
   },
   {
      "quantity": "1",
      "description": "VIP Ticket to Event"
   },
   {
      "quantity": "1",
      "description": "Regular Ticket to Event"
   },
   {
      "quantity": "1",
      "description": "Regular Ticket to Event"
   },
];
const groupAndAdd = arr => {
   const res = [];
   arr.forEach(el => {
      if (!this[el.description]) {
         this[el.description] = {
            description: el.description, quantity: 0
         };
         res.push(this[el.description]);
      };
      this[el.description].quantity += +el.quantity;
   }, {});
   return res;
}
console.log(groupAndAdd(arr));

출력

콘솔의 출력은 -

[
   { description: 'VIP Ticket to Event', quantity: 3 },
   { description: 'Regular Ticket to Event', quantity: 2 }
]