ปัญหา
เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ตัวเลขสามอาร์เรย์ ฟังก์ชันควรคืนค่าผลรวมของตัวเลขทั้งหมดที่ซ้ำในทั้งสามอาร์เรย์
ตัวอย่าง
โค้ดตัวอย่างด้านล่าง:
const arr1 = [4, 4, 5, 8, 3];
const arr2 = [7, 3, 7, 4, 1];
const arr3 = [11, 0, 7, 3, 4];
const sumCommon = (arr1 = [], arr2 = [], arr3 = []) => {
let sum = 0;
for (let i = 0; i < arr1.length; i++) {
const el = arr1[i];
const ind2 = arr2.indexOf(el);
const ind3 = arr3.indexOf(el);
if (ind2 !== -1 && ind3 !== -1) {
arr2.splice(ind2, 1);
arr3.splice(ind3, 1);
sum += el;
}
}
return sum;
};
console.log(sumCommon(arr1, arr2, arr3));
ผลลัพธ์
7
คำอธิบายเพิ่มเติม
common elements: 4 (ในทั้ง 3), 3 (ในทั้ง 3) → 4+3=7 โค้ดใช้ splice ลบออกเพื่อกันนับซ้ำ (handle duplicates) แต่ mutate arr2, arr3 ซึ่งเป็น side effect ควร copy ก่อน หรือใช้ frequency map