查找包含 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.