Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การจัดกลุ่มรายการที่คล้ายกันใน JSON ด้วย JavaScript

สมมติเรามี JSON Array ที่มีข้อมูลตั๋วแบบนี้:

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 ที่รับอาร์เรย์แบบนี้เข้ามา ฟังก์ชันควรจัดกลุ่มออบเจกต์ที่คล้ายกันรวมกันและบวก property quantity ของพวกเขา

สองออบเจกต์จะถือว่าคล้ายกันถ้ามีค่า 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 }
]