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

Tìm giao điểm của các mảng có chứa các mục nhập lặp lại trong JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript có hai mảng số, hãy gọi chúng là arr1 và arr2.

Hàm phải xây dựng một mảng thứ ba dựa trên hai mảng đầu vào chứa tất cả các phần tử chung cho cả arr1 và arr2.

Lưu ý rằng nếu có nhiều hơn một phần tử giống nhau có mặt trong cả hai mảng thì chúng ta phải xem xét tất cả các trường hợp như vậy của phần tử đó.

Ví dụ -

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

const arr1 = [1, 2, 2, 4, 4, 5, 6];
const arr2 = [3, 2, 4, 2, 4, 9];

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

const output = [2, 2, 4, 4];

Ví dụ

Sau đây là mã -

const arr1 = [1, 2, 2, 4, 4, 5, 6];
const arr2 = [3, 2, 4, 2, 4, 9];
const findIntersection = (arr1 = [], arr2 = []) => {
   const map = new Map();
   for (const el of arr2) {
      const count = map.get(el) || 0;
      map.set(el, count + 1);
   };
   return arr1.filter(el => {
      let count = map.get(el);
      if (count) {
         map.set(el, --count);
         return true;
      }
      return false;
   });
};
console.log(findIntersection(arr1, arr2));

Đầu ra

Sau đây là đầu ra của bảng điều khiển -

[2, 2, 4, 4]