如何检索同一文档的两个不同数组中存在的元素。
例如。在帖子集合中,文档中包含“利用者”的字段。和' interestbyreader。'每个字段都包含用户ID。
'interestbycreator': //an array of ids here. IdA, idB, IdC, IdD, IdE,
'interestbyreader': //an array of ids here. IdB, idE, iDF
基本上我希望找到两个数组中存在的所有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();
假设我有另一个阵列' interestbycreator'存储在名为interestIdcreator的变量中,是否可以比较它们以查找重复项并返回这些重复项?
答案 0 :(得分:12)
正如saimeunt在评论中所述,当您有权访问下划线时使用intersection,但您也可以使用普通的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);
数组z
包含双重条目。
答案 1 :(得分:6)
正如Saimeunt指出的那样,它可以作为
完成var x = ['IdA', 'idB', 'IdC', 'IdD', 'IdE'];
var y = ['idB', 'IdE', 'IdF'];
var z = _.intersection(x, y);