所以我想在js中创建一个函数,该函数接受两个数组并进行比较,并根据两个数组中匹配的点数给出一个分数。是对的还是bd写的。我是编码新手。

我遇到的另一个问题是,当我尝试在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++;
        }
    }
}

最佳答案

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

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


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

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


文件:
  • Array.prototype.reduce()
  • Array.prototype.includes()
  • Array.prototype.filter()
  • Arrow Functions
  • 关于javascript - 查找两个数组中匹配元素的数量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49840742/

    10-11 03:03
    查看更多