สมมติว่า เรามีอ็อบเจ็กต์สองอาร์เรย์ที่มีข้อมูลเกี่ยวกับผลิตภัณฑ์บางอย่างของบริษัท −
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 } ]