Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 比较两个以上的阵列_Javascript - Fatal编程技术网

Javascript 比较两个以上的阵列

Javascript 比较两个以上的阵列,javascript,Javascript,比较任意数量数组的数组的好算法是什么。互联网上有很多东西可以比较两个数组,但不能比较任意数量的数组。例如,下面的数组 [ [5, 10, 15, 20], [15, 88, 1, 5, 7], [1, 10, 15, 5, 20] ] 我尝试了以下代码,以确保它不起作用。试图从概念上理解我应该如何做 function compareTwoArrays(a, b) { let output = []; if (a.length <= b.length) { for (let

比较任意数量数组的数组的好算法是什么。互联网上有很多东西可以比较两个数组,但不能比较任意数量的数组。例如,下面的数组

[ [5, 10, 15, 20], [15, 88, 1, 5, 7], [1, 10, 15, 5, 20] ]
我尝试了以下代码,以确保它不起作用。试图从概念上理解我应该如何做

function compareTwoArrays(a, b) {
  let output = [];
  if (a.length <= b.length) {
    for (let i = 0; i < a.length; i++) {
       for (let j = 0; j < b.length; j++) {
         if (a[i] === b[j]) {
           output.push(a[i]);
         }
       }
    }
  } else {
    for (let i = 0; i < b.length; i++) {
       for (let j = 0; j < a.length; j++) {
         if (b[i] === a[j]) {
           output.push(b[i]);
         }
       }
    }
  }
  return output;
}

function intersection(arr) {
  let output = [];
  for (let i = 1; i < arr.length; i++) {
    for (let j = 0; j < arr[i].length; j++) {
      if (arr[i][j].contains(arr[0][j])) {
        console.log(arr[i][j]);
      }
    }
  }

}
const arr1 = [5, 10, 15, 20];
const arr2 = [15, 88, 1, 5, 7];
const arr3 = [1, 10, 15, 5, 20];
console.log(intersection([arr1, arr2, arr3])); 
函数比较波形(a,b){
让输出=[];

if(a.length如果两个数组的交集有一个正确的算法(我们称之为
intersect
)然后,您可以轻松地使用此函数获取两个以上数组的交点。只需获取前两个数组的交点。然后获取该结果与第三个数组的交点。然后使用该结果与第四个数组的交点……等等。这通常是减速器所做的:

//假设您有一个正确的成对相交函数。
//可以是这个,也可以是任何其他正确的实现:
函数相交(a,b){
返回a.filter(函数(v){
返回此。has(v);
},新组(b));
}
//…那么您只需要将其概括为:
const multiIntersect=arrays=>arrays.reduce(intersect);
//演示
常数arr1=[5,10,15,20];
常数arr2=[15,88,1,5,7];
常数arr3=[1,10,15,5,20];

console.log(multiIntersect([arr1,arr2,arr3]);
您想要与什么进行比较?您想要多个数组的交集?您意识到交集(A,B,C)==交集(交集(A,B),C),这样你就可以用两个数组的任何正确算法轻松解决这个问题了?数组是二维的?还是三维的?据我所知,除了每个数组的嵌套for循环外,没有任何特定的算法可以一次比较多个数组。这会使你的程序非常慢,不过谢谢trincot.Ve完美的解决方案。