查找两个数组中匹配元素的数量?

时间:2018-04-15 10:09:41

标签: javascript arrays compare

所以我想在js中创建一个函数,它接受两个数组并比较它们,并根据两个数组中的多少个点匹配得分。是对还是写的。我是编码的新手。

我遇到的另一个问题是当我尝试在chrome的控制台上执行它时。它说比较没有定义

let score = 0;
function compare(arr1, arr2) {
  for (let i = 0; i < arr2.length; i++) {
     for (let j = 0; j < arr1.length; j++) {
        if(arr1[j] === arr2[i]){
            score++;
        }   
    }
}

2 个答案:

答案 0 :(得分:1)

您可以使用.reduce()查找匹配元素的数量:

&#13;
&#13;
let arr1 = [1, 2, 3, 4, 5],
    arr2 = [3, 4, 5, 6, 7],
    compare = (a1, a2) => arr1.reduce((a, c) => a + arr2.includes(c), 0);

console.log(compare(arr1, arr2));
&#13;
&#13;
&#13;

或者,您可以使用.filter()查找匹配元素的数组,并使用其长度来确定计数。

&#13;
&#13;
let arr1 = [1, 2, 3, 4, 5],
    arr2 = [3, 4, 5, 6, 7],
    compare = (a1, a2) => arr1.filter(v => arr2.includes(v)).length;

console.log(compare(arr1, arr2));
&#13;
&#13;
&#13;

<强>文档:

答案 1 :(得分:0)

这应该适合你:

根据您的要求更新了代码:

&#13;
&#13;
let arr1 = [1, 2, 3, 4];
let arr2 = [3,2,3,4,5];
function compare(arr1,arr2){
  let count=0;
  const max=arr1.length>arr2.length ? arr2.length : arr1.length;
  for(var i=0;i<max;i++){
    if(arr1[i]==arr2[i]){
      count++;
    }
  }
  return count;
}
console.log(compare(arr1,arr2));
&#13;
&#13;
&#13;