js 找出多个数组中共同包含的元素, 并返回一个新的数组
该方法接收一个由多个数组组成的数组 arrs 作为参数。然后通过使用 reduce 方法对每个数组进行处理,最终将每个数组中与前面的数组共同存在的元素筛选出来,存储在一个新数组中返回。
let arr1 = [1,2,3,4,5],arr2=[[2,3,4]]
function getSameData (arrs) {
return arrs.reduce(function (prev, cur) {
return Array.from(new Set(cur.filter(item => prev.includes(item))))
})
}
getSameData([arr1,arr2]) // 返回[2,3,4]
解释:
- prev 参数 表示上一个数组(初始值为空数组)
- cur 参数表示当前要处理的数组。
- cur.filter(item => prev.includes(item)) 表示找出当前数组中在上一个数组中也出现过的元素
- Array.from(new Set(cur.filter(item => prev.includes(item)))) 则表示去重后将其存储在一个新数组中并返回,在这使用了ES6的语法Set去重