您如何比较两个数组,并找出有多少个相似的值?

时间:2018-12-21 21:39:50

标签: javascript

在发现如何将JavaScript中的两个数组与函数进行比较时,我遇到了一个问题。不仅进行比较,而且找出相似的值。

我知道如何使用异常大的if / else if语句来执行此操作,但这会使代码变得混乱且难以阅读。

例如:

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

在这种情况下,3、4和5将是两个数组中表示的值,但是比较这两者并通过函数找出它们的好方法是什么。

3 个答案:

答案 0 :(得分:3)

在这里使用过滤器。

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

var commonArray = array1.filter(element => array2.includes(element));

console.log(commonArray);

答案 1 :(得分:3)

您可以使用reduce()来计算另外include()个对象中的多少:

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

let count = array1.reduce((count, item) => count + (array2.includes(item) ? 1 : 0), 0)
console.log(count)

如果array1可能有重复项,而您只想计算一次。您可以使用集合:

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

let s2 = new Set(array2)

let count = [...new Set(array1)].reduce((count, item) => s2.has(item) ? count + 1 : count, 0)

// still 3
console.log(count)

答案 2 :(得分:2)

尝试一下

array1.reduce((accum, n) => {
    const accumulator = [...accum];
    if(array2.includes(n))
        accumulator.push(n)
    return accumulator;
},[])