比较两个数组并返回重复值

met*_*uzz 4 javascript arrays underscore.js meteor

我如何检索存在于同一文档的两个不同数组中的元素.

例如.在Posts集合中,文档的字段是"interestbycreator"和"interestbyreader".每个字段都包含用户ID.

'interestbycreator':  //an array of ids here. IdA, idB, IdC, IdD, IdE,
'interestbyreader':  //an array of ids here. IdB, idE, iDF
Run Code Online (Sandbox Code Playgroud)

基本上我希望找到两个数组中存在的所有id,因此应该是IdB和IdE.

我能够从带有下划线的数组中提取所有值并将它们存储在变量中.他们可以通过这种方式相互比较并返回重复项吗?或者有人可以解释另一种解决方案.

从'interestbyreader中检索所有ID的示例

var interestbypostcreater = Posts.find({_id: Meteor.user().profile.postcreated[0]}, {fields: {interestbyreader: 1}}).fetch();
var interestedReaderIds = _.chain(interestbypostcreator).pluck('interestbyreader').flatten().value();
Run Code Online (Sandbox Code Playgroud)

假设我将另一个数组'interestbycreator'存储在一个名为interestIdcreator的变量中,是否可以比较它们以查找重复项并返回这些重复项?

Nic*_*ler 15

正如saimeunt在评论中所说,当您可以访问下划线使用交集时,但您也可以使用普通的javascript:

var x = ['IdA', 'idB', 'IdC', 'IdD', 'IdE'];
var y = ['idB', 'IdE', 'IdF'];

var z = x.filter(function(val) {
  return y.indexOf(val) != -1;
});

console.log(z);
Run Code Online (Sandbox Code Playgroud)

该数组z包含双重条目.

致积于/sf/answers/1045139721/


met*_*uzz 7

正如Saimeunt指出的那样,它可以做到

var x = ['IdA', 'idB', 'IdC', 'IdD', 'IdE'];
var y = ['idB', 'IdE', 'IdF'];

var z = _.intersection(x, y);
Run Code Online (Sandbox Code Playgroud)