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

การหาผลรวมสมาชิกทั่วไปทั้งหมดภายในอาร์เรย์ใน JavaScript

ปัญหา

เราต้องเขียนฟังก์ชัน 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