在数组中查找匹配项

时间:2017-08-15 18:36:22

标签: javascript arrays find match

我有array1 = [4, 5, 6, 7, 4, 5];array2 = [4, 5]

我想匹配array1中的array2并输出匹配的次数。

var array1 = [4, 5, 6, 7, 4, 5];
var array2 = [4, 5];
function match(a1, a2) {
    //matches 4,5 twice bc it is in array1
}

match(array1, array2) //output: 2;

5 个答案:

答案 0 :(得分:3)

您必须使用嵌套循环并将两个数组的每个索引相互比较。

var count = 0;
for (var i = 0; i < a1.length; i++)
{
 for (var j = 0; j < a2.length; j++)
 {
  if (a1[i]==a2[j])
  {
   count +=1;
  }
 }
}

答案 1 :(得分:2)

解决问题的最佳方法是交叉。

问题的解决方案:https://stackoverflow.com/a/1885660/4120554

答案 2 :(得分:2)

你要求的是一个十字路口。如果您只对匹配数感兴趣,那么此功能应该可以解决问题:

var array1 = [4, 5, 6, 7, 4, 5];
var array2 = [4, 5];

function intersectCount(arr1, arr2) {
    var c = 0;
    for(const item of arr2) {
        if (arr1.indexOf(item) != -1) c++;
    }

    return c;
}

intersectCount(array1, array2); // result: 2

答案 3 :(得分:1)

您可以在下面的代码中使用您的问题;

var array1 = [4, 5, 6, 7, 4, 5];
var array2 = [4, 5];
function match(a1, a2) {
    var result = [];
    for(const item of a2) {
        if (a1.indexOf(item) > -1 ) {
            result.push (item);
        }
    }
    return result.length;
}

答案 4 :(得分:1)

如果您想比较每个索引:

var match = (arr1,arr2)=>arr1.filter((el,i)=>el === arr2[i]).length;

如果要计算两个数组中存在的所有元素,可以通过集合统一:

 function match(arr1,arr2){
   var set = new Set( arr2 );
   return arr1.filter( el => set.has(el) ).length;
}