Javascript 将数组数组传递到lodash交点

Javascript 将数组数组传递到lodash交点,javascript,ecmascript-6,lodash,Javascript,Ecmascript 6,Lodash,我有一个包含对象的数组: let data = [[{a:0}, {b:1}], [{a:1}, {b:1}]] 现在我想对这两个数组进行比较,返回[{b:1}] 当我这样做时: import {intersection} from 'lodash' return intersection([{a:0}, {b:1}], [{a:1}, {b:1}]) 结果是正确的 但当我这么做的时候 return intersection(data) 我只是得到了同样的结果 是否有一种简单的方法将所有

我有一个包含对象的数组:

let data = [[{a:0}, {b:1}], [{a:1}, {b:1}]]
现在我想对这两个数组进行比较,返回
[{b:1}]

当我这样做时:

import {intersection} from 'lodash'

return intersection([{a:0}, {b:1}], [{a:1}, {b:1}])
结果是正确的

但当我这么做的时候

return intersection(data)
我只是得到了同样的结果

是否有一种简单的方法将所有数组从数据传递到交集函数?我最初的想法是使用.map,但这会返回另一个数组

您可以只使用数组

intersection(...arrayOfarrays);
或者,在ES6之前的环境中,使用:

或者,您可以将
intersect
转换为具有展开参数的函数:

const intersectionArrayOfArrays = _.spread(_.intersection);
intersectionArrayOfArrays(arrayOfArrays);

要注意,尽管在洛达斯的十字路口

如果要在属性
b
上相交,可以使用:

const arrayOfArrays=[{a:0},{b:1}],{a:1},{b:1}];
console.log(
_.intersectionBy(…arrayOfArrays,'b')
)

我认为您不会从中得到任何回报,因为我相信这是在比较引用,而不是值。您应该使用或来代替。@MihaŠušteršič很高兴帮助drugar:)@nem035感谢您添加了对象数组交集的正确用法。但是,我要挑剔一下,并指出在您的
相交部分中,您说
\uq.isEqual
通过引用比较对象,这是不正确的<代码>.\uq.isEqual
对对象属性值进行深度比较。@mhodges您完全正确,感谢您指出这一点。修正。您好,谢谢@nem035的回答:这真是我的一天。我尝试了
交叉点(…myArrayOfArrays)
,得到
[ts]类型为“{}”的参数不能赋值给类型为“ArrayLike”的参数。类型“{}”中缺少属性“length”。
const intersectionArrayOfArrays = _.spread(_.intersection);
intersectionArrayOfArrays(arrayOfArrays);