Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

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


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

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

สังเกตว่าขนาดเดียวกันมาหลายครั้งได้อย่างไร

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

ตัวอย่าง

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 } ]