查詢包含 JavaScript 中重複條目的陣列的交集


我們需要編寫一個 JavaScript 函式,它接收兩個數字陣列,我們稱之為 arr1 和 arr2。

該函式應該基於這兩個輸入陣列構建一個第三個陣列,其中包含 arr1 和 arr2 共有的所有元素。

注意,如果這兩個陣列中存在多個相同的元素,則我們必須考慮該元素的所有此類例項。

例如 −

如果輸入陣列為 −

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

則輸出陣列應為 −

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

示例

以下是程式碼 −

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

輸出

以下是控制檯輸出 −

[2, 2, 4, 4]

更新於: 18-1 月-2021

95 個瀏覽量

啟動你的 職業

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.