在发现如何将JavaScript中的两个数组与函数进行比较时,我遇到了一个问题。不仅进行比较,而且找出相似的值。
我知道如何使用异常大的if / else if语句来执行此操作,但这会使代码变得混乱且难以阅读。
例如:
var array1 = [1,2,3,4,5];
var array2 = [3,4,5,6,7];
在这种情况下,3、4和5将是两个数组中表示的值,但是比较这两者并通过函数找出它们的好方法是什么。
答案 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;
},[])