使用 Lodash 在 [] 数组中查找 JSON 数组的索引

Use Lodash to find the indexOf a JSON array inside of an [] array

我有一个看起来像这样的数组。

Users : {
  0 : { BidderBadge: "somestuff", Bidders: 6, }
  1 : { BidderBadge: "somemorestuff", Bidders: 7,}
}

我想使用 lodash 搜索数组以在每个用户对象中找到一个值。

具体来说,我想使用另一个类似对象数组的值来查找值。

var bidArray = [];
    _.each(this.vue.AllUsers, function(user) {
      _.each(this.vue.Bids, function(bid) {
        if(user.BidderBadge == bid.Badge) {   
          bidArray.push(user);
        }
      });
    });

这就是我所拥有的并且它有效,但我想只使用一个循环而不是两个循环来完成它。我想使用类似 _.indexOf 的东西。这可能吗?

如果你想避免嵌套,你只需要稍微修改一下Azamantes的解决方案

var bidders = this.vue.Bids.reduce(function(acc, bid) {
    return acc[bid.BidderBadge] = true;
}, {});
var bidArray = this.vue.AllBidders.filter(function(bidder) {
    return !!bidders[bidder.Badge];
});

很难用与您提供的输入不一致的例子给出准确的答案。

无论如何,假设你的数据结构或多或少像这样,你可以用 lodash 解决问题 _.intersectionWith

使用检查正确对象属性的比较器将两个数组相交。另外,请考虑到用户必须先进入交叉路口,因为您对其值感兴趣。

function comparator(user, bid) {
  return user.BidderBadge === bid.Badge;
}
console.log(_.intersectionWith(users, bids, comparator));

这是fiddle