使用 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。
我有一个看起来像这样的数组。
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。