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

JavaScript: เปรียบเทียบคุณสมบัติขององค์ประกอบอาร์เรย์ และรวมหากเหมือนกัน

สมมติว่ามีอาร์เรย์ของออบเจ็กต์ที่มีข้อมูลเกี่ยวกับอุปกรณ์จัดเก็บข้อมูลดังนี้:

const drives = [
  {size:"900GB", count:3},
  {size:"900GB", count:100},
  {size:"1200GB", count:5},
  {size:"900GB", count:1}
];

สังเกตว่าขนาด (size) เดียวกันปรากฏหลายครั้ง

เราต้องเขียนฟังก์ชันที่รับอาร์เรย์ดังกล่าวและรวมขนาดที่ซ้ำกันให้กลายเป็นดัชนีอาร์เรย์เพียงตัวเดียว พร้อมรวมจำนวน (count) ของแต่ละขนาด

ตัวอย่าง

const drives = [
  {size:"900GB", count:3},
  {size:"900GB", count:100},
  {size:"1200GB", count:5},
  {size:"900GB", count:1}
];

const groupDrives = (arr = []) => {
  const map = drives.reduce((map, e) => {
    if (e.size in map) map[e.size].count += e.count
    else map[e.size] = e
    return map;
  }, {})
  const result = Object.keys(map).map(function (k) {
    return this[k]
  }, map);
  return result;
}

console.log(groupDrives(drives));

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็นดังนี้:

[ { size: '900GB', count: 104 }, { size: '1200GB', count: 5 } ]