返回一个数组的函数,该数组是其他两个数组的交集

基瓦亚·谢哈德
function arraysCommon(array1, array2) {
  return array1.filter(x => array2.includes(x));
}

此功能无法按我想要的方式工作。例如 givenarray1 = [1,2,3,2,1]并且array2 = [5,4,3,2,1]它返回[1,2,3,2,1],因为元素1,2,3在两个数组中都可以看到。但我希望它按该顺序返回[1,2,3],因为1,2,3只出现一次array2并被视为单独的实体。

所以几乎功能应该是

  • 第一个数组中的每个元素最多可以映射到第二个数组中的一个元素。
  • 每个数组中的重复元素被视为单独的实体。
  • 第一个数组确定顺序

我试图遍历数组并检查和比较每个数组中重复的数量,但我似乎无法让逻辑正常工作。有没有不同的方法来解决这个问题?

我附上了两个维恩图的图像,可以澄清差异我附上了两个维恩图的图像,可以澄清差异

扎莱克特

不幸的是,它变得更加复杂,因为您需要知道您已经添加了哪些数字。在这种情况下,您需要一个临时数组来保存结果。我们还需要两次跟踪数组中是否存在一个数字。

尝试这个:

function arraysCommon(array1, array2) {
  //Copy array2 by duplicating and spreading the elements into another array.
  var copyArray2 = [...array2];
  //Temperary Array
  var temp = [];
  for (let x of array1) {
      //Check if the element is in the first array and not already added to the temp array
      if (copyArray2.includes(x)) {
          temp.push(x);
          //Remove item from copy array2 so it cannot be used anymore
          copyArray2.splice(copyArray2.indexOf(x), 1);
      }
  } 
  //Return the temp array
  return temp;
}

console.log(arraysCommon([1,2,3,2,1], [5,4,3,2,1]))
console.log(arraysCommon([1,2,3,2,1], [2,2,3,3,4]))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在python中将一个数组与其他两个数组进行比较

对一个数组进行排序并使其他两个数组保持同步

给定两个数组,编写一个函数来计算它们的交集

在 Javascript 中从其他两个数组构建一个新数组

Python - 返回两个数组的交集

将一个数组的元素与其他两个数组的元素进行比较,迅速

判断一个数是否与数组中的任意其他两个数组成一个连续的三个数

合并两个数组并应用一个函数

使用jQuery“ extend”连接两个数组将返回一个数组

如何使用聚合框架比较两个其他数组,从而获得一个数组?

如何在一系列其他两个数组之间创建一个随机数组?

Postgres WHERE两个数组有一个非空的交集

对象的交集,两个数组之间的一个属性除外

给定一个数组和一个测试函数的返回两个数组的函数是否有名称?

从两个数组创建一个多维数组

创建一个函数,该函数返回一个数组,其中包含由两个数组或一个数组和多个单个项构建的唯一项

创建一个变量,其中包含由两个 .map() 组成的两个数组,以寻找匹配或交集

如何比较两个数组的大小并返回一个更大的数组(不是值或大小)?

如何产生一个数组,该数组是两个json对象数组之间的差异

通过对其他两个数组的所有元素应用二进制运算,在Swift中创建一个数组

有效地将一个数组中的字段合并到其他两个数组中

BASH中两个数组的交集

找到两个数组之间的交集

Java,找到两个数组的交集

部分匹配的两个数组的交集

快速计算两个数组的交集

两个数组之间的交集

范围的两个数组的交集

根据其他两个数组的前一个元素和后一个元素的差异创建新数组