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

compare two arrays and return duplicate values

本文关键字:返回 数组 两个 比较      更新时间:2023-09-26

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

例如。在Posts集合中,文档具有字段"interestbycreator"answers"interestby reader"每个字段都包含用户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的变量中,可以对它们进行比较以查找重复项并返回这些重复项吗?

正如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);

则数组z包含双条目。

信用额度https://stackoverflow.com/a/14930567/441907

正如Saimeunt所指出的,它可以作为来完成

var x = ['IdA', 'idB', 'IdC', 'IdD', 'IdE'];
var y = ['idB', 'IdE', 'IdF'];
var z = _.intersection(x, y);