Computer >> Máy Tính >  >> Lập trình >> Javascript

Giao điểm của ba mảng được sắp xếp trong JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript nhận trong ba mảng số nguyên, tất cả được sắp xếp theo thứ tự tăng dần. Sau đó, hàm sẽ tạo và trả về một mảng chỉ chứa những phần tử có trong cả ba mảng.

Ví dụ -

Nếu các mảng đầu vào là -

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];

Sau đó, đầu ra phải là -

const output = [4, 13];

Ví dụ

Mã cho điều này sẽ là -

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));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

[4, 13]