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

การหาส่วนร่วมของสามอาร์เรย์ที่เรียงแล้วใน JavaScript

เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์จำนวนเต็มสามอาร์เรย์ ที่เรียงเพิ่มขึ้นทั้งหมด ฟังก์ชันต้องสร้างและคืนอาร์เรย์ที่มีเฉพาะสมาชิกที่ปรากฏในทั้งสามอาร์เรย์

ตัวอย่าง

ถ้าอาร์เรย์นำเข้าคือ:

const arr1 = [4, 7, 8, 11, 13, 15, 17];
const arr2 = [1, 3, 4, 13, 18];
const arr3 = [2, 4, 7, 8, 9, 10, 13];

ผลลัพธ์ควรเป็น:

const output = [4, 13];

ตัวอย่างโค้ด

const arr1 = [4, 7, 8, 11, 13, 15, 17];
const arr2 = [1, 3, 4, 13, 18];
const arr3 = [2, 4, 7, 8, 9, 10, 13];
const intersectThree = (arr1 = [], arr2 = [], arr3 = []) => {
  let curr1 = 0;
  let curr2 = 0;
  let curr3 = 0;
  const res = [];
  while((curr1 < arr1.length) && (curr2 < arr2.length) && (curr3 < arr3.length)) {
    if((arr1[curr1] === arr2[curr2]) && (arr2[curr2] === arr3[curr3])) {
      res.push(arr1[curr1]);
      curr1++;
      curr2++;
      curr3++;
    }
    const max = Math.max(arr1[curr1], arr2[curr2], arr3[curr3]);
    if(arr1[curr1] < max) {
      curr1++;
    }
    if(arr2[curr2] < max) {
      curr2++;
    }
    if(arr3[curr3] < max) {
      curr3++;
    }
  }
  return res;
};
console.log(intersectThree(arr1, arr2, arr3));

ผลลัพธ์

[4, 13]