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在这里提供了一个很好的解决方案