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

รวมวัตถุ &รวมคุณสมบัติเดียวใน JavaScript


สมมติว่า เรามีอ็อบเจ็กต์สองอาร์เรย์ที่มีข้อมูลเกี่ยวกับผลิตภัณฑ์บางอย่างของบริษัท −

const first = [
   {
      id: "57e7a1cd6a3f3669dc03db58",
      quantity:3
   },
   {
      id: "57e77b06e0566d496b51fed5",
      quantity:3
   },
   {
      id: "57e7a1cd6a3f3669dc03db58",
      quantity:3
   },
   {
      id: "57e77b06e0566d496b51fed5",
      quantity:3
   }
];
const second = [
   {
      id: "57e7a1cd6a3f3669dc03db58",
      quantity:6
   },
   {
      id: "57e77b06e0566d496b51fed5",
      quantity:6
   }
];

ตอนนี้เราจำเป็นต้องเขียนฟังก์ชันที่รวมอาร์เรย์ทั้งสองเข้าด้วยกัน เพื่อที่อ็อบเจ็กต์ที่มี id เดียวกันจะไม่ปรากฏซ้ำ ๆ และยิ่งไปกว่านั้น คุณสมบัติปริมาณสำหรับ id ที่ซ้ำกันของอ็อบเจ็กต์จะถูกรวมเข้าด้วยกัน

ดังนั้น เรามาเขียนโค้ดสำหรับฟังก์ชันนี้กัน −

ตัวอย่าง

const first = [
   {
      id: "57e7a1cd6a3f3669dc03db58",
      quantity:3
   },
   {
      id: "57e77b06e0566d496b51fed5",
      quantity:3
   },
   {
      id: "57e7a1cd6a3f3669dc03db58",
      quantity:3
   },
   {
      id: "57e77b06e0566d496b51fed5",
      quantity:3
   }
];
const second = [
   {
      id: "57e7a1cd6a3f3669dc03db58",
      quantity:6
   },
   {
      id: "57e77b06e0566d496b51fed5",
      quantity:6
   }
];
const mergeArray = (first, second) => {
   return [...first, ...second].reduce((acc, val, i, arr) => {
      const { id, quantity } = val;
      const ind = acc.findIndex(el => el.id === id);
      if(ind !== -1){
         acc[ind].quantity += quantity;
      }else{
         acc.push({
            id,
            quantity
         });
      }
      return acc;
   }, []);
}
console.log(mergeArray(first, second));

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็น -

[
   { id: '57e7a1cd6a3f3669dc03db58', quantity: 12 },
   { id: '57e77b06e0566d496b51fed5', quantity: 12 }
]