Javascript中的相交数组

Javascript中的相交数组,javascript,node.js,Javascript,Node.js,如何在Javascript中以合理的速度相交数组 即 结果:[4]您可以为具有and的公共元素使用交集函数 功能通用(a、b){ 返回b.filter(Set.prototype.has.bind)(新的Set(a)); } log([[1,2,3,4,5],[1,2,3,4],[4],[4,5]].reduce(公共))您可以为带有and的公共元素使用交集函数 功能通用(a、b){ 返回b.filter(Set.prototype.has.bind)(新的Set(a)); } log([[

如何在Javascript中以合理的速度相交数组


结果:
[4]

您可以为具有and的公共元素使用交集函数

功能通用(a、b){
返回b.filter(Set.prototype.has.bind)(新的Set(a));
}

log([[1,2,3,4,5],[1,2,3,4],[4],[4,5]].reduce(公共))您可以为带有and的公共元素使用交集函数

功能通用(a、b){
返回b.filter(Set.prototype.has.bind)(新的Set(a));
}

log([[1,2,3,4,5],[1,2,3,4],[4],[4,5]].reduce(公共))
除非我知道我的数组将非常大,否则我只会使用
filter()
includes()
。这运行起来“相当快”,可能比在加入大量正常大小的阵列时创建一组集合要快,但是对于较少、非常大的阵列,
new Set()
可能会更快:

设arr1=[1,2,3,4,5];
设arr2=[1,2,3,4,5];
设arr3=[4];
设arr4=[4,5];
设r=[arr1,arr2,arr3,arr4].reduce((a,c)=>a.filter(i=>c.includes(i)))

log(r)
除非我知道我的数组将非常大,否则我只会使用
filter()
includes()
。这运行起来“相当快”,可能比在加入大量正常大小的阵列时创建一组集合要快,但是对于较少、非常大的阵列,
new Set()
可能会更快:

设arr1=[1,2,3,4,5];
设arr2=[1,2,3,4,5];
设arr3=[4];
设arr4=[4,5];
设r=[arr1,arr2,arr3,arr4].reduce((a,c)=>a.filter(i=>c.includes(i)))


console.log(r)
他们似乎在询问列表的交叉点。与其重新转换方向盘,不如检查一下:NJOIN到底是什么?你是说十字路口吗?哇!如果你想回应某个人的评论,那么在你的评论中使用put@username。这是唯一能让他们知道你做了你想让他们看到的事情的方法。否则,他们将永远看不到你的评论。他们似乎在询问列表的交叉点。与其重新转换方向盘,不如检查一下:NJOIN到底是什么?你是说十字路口吗?哇!如果你想回应某个人的评论,那么在你的评论中使用put@username。这是唯一能让他们知道你做了你想让他们看到的事情的方法。否则,他们将永远看不到你的评论。这是否如OP所问的“相当快”?它创建了一个
新集合()
很多。对于给定的数据,它可以快速写入。。。o_ONina,你能解释一下吗:Set.prototype.has.bind(new Set(a))@jamesemanon,我想要的是把一个函数作为回调函数。在这种情况下,
具有来自
集合的
,但不能使用
新集合([…]).has
,因为它返回一个错误
Set.prototype.has:“this”不是集合对象
。因此,我采用了原型,并使用
bind
将一个集合设置为
this
。瞧,这真是太聪明了,就像OP所说的“相当快”?它创建了一个
新集合()
很多。对于给定的数据,它可以快速写入。。。o_ONina,你能解释一下吗:Set.prototype.has.bind(new Set(a))@jamesemanon,我想要的是把一个函数作为回调函数。在这种情况下,
具有来自
集合的
,但不能使用
新集合([…]).has
,因为它返回一个错误
Set.prototype.has:“this”不是集合对象
。因此,我采用了原型,并使用
bind
将一个集合设置为
this
。瞧,这太聪明了
arr1 = [1,2,3,4,5];
arr2 = [1,2,3,4];
arr3 = [4];
arr4 = [4,5];