Javascript 在数组中查找匹配项

Javascript 在数组中查找匹配项,javascript,arrays,find,match,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; 必须使用嵌套循环,并将两个数组的每个索引相互比较 v

我有
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;

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

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;
  }
 }
}
var计数=0;
对于(变量i=0;i
解决问题的最佳方法是通过交叉路口


你的问题的解决方案是:

你所要求的是一个十字路口。如果您只对匹配的数量感兴趣,则此函数应执行以下操作:

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

您可以使用以下代码来回答您的问题

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

如果要比较每个索引,请执行以下操作:

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

到目前为止,你都做到了吗?你都做了些什么?结果是否
2
是因为4和5在的两个数组中都位于位置0和1,因为它们在两个数组中都存在?基本上,您需要的是彼此内部的两个循环。我尝试过,但失败了函数checkArray(array,query){var ac=0;for(array中的var i){for(var j in query){if(query[j]==array[i]){ac+=1;}}}}返回ac;}@k-gun在这里提供了一个很好的解决方案