Javascript 使用Lodash筛选2个集合
我被如何做下面的事情难住了。我有两个目标: 新价目表:Javascript 使用Lodash筛选2个集合,javascript,arrays,filter,lodash,Javascript,Arrays,Filter,Lodash,我被如何做下面的事情难住了。我有两个目标: 新价目表: [{id:1, updatedPrice:22}, {id:4, updatedPrice:23}] [{id:1, price:200, name:"carrot}, {id:2, price:100, name:apple}] 价格表: [{id:1, updatedPrice:22}, {id:4, updatedPrice:23}] [{id:1, price:200, name:"carrot}, {id:2, price:
[{id:1, updatedPrice:22}, {id:4, updatedPrice:23}]
[{id:1, price:200, name:"carrot}, {id:2, price:100, name:apple}]
价格表:
[{id:1, updatedPrice:22}, {id:4, updatedPrice:23}]
[{id:1, price:200, name:"carrot}, {id:2, price:100, name:apple}]
如果对象具有更新的价格,则价格将更新,否则价格将保持不变。理想情况下,我希望返回如下结果:
[{id:1, price:22},{id:2, price:100}, {id:3, price:23}]
为了做到这一点,我得到了一个不变价格的列表,并将其附加到新的价格中。然而,我似乎不知道如何得到一个不变价格的列表。我还想知道是否有可能在一个步骤中完成这一切
var unChangedPrices = _(currPriceList).reject('id').at(newPriceList.id);
如果您可以将“updatedPrice”重命名为“price”,则可以像这样简化
_.forEach(p1, function(obj){
_.merge(_.find(p2, {"id": obj.id}), obj)
});
如果你不改名字,情况就是这样
更新:
使用此选项可以将p1中的所有内容都包含在p2中,即使其id不匹配
_.forEach(p1, function(obj){
var p2Obj = _.find(p2, {"id": obj.id});
if(p2Obj){
_.merge(p2Obj, obj);
}else{
p2 = _.concat(p2,[p2Obj]);
}
});
如果您可以将“updatedPrice”重命名为“price”,则可以像这样简化
_.forEach(p1, function(obj){
_.merge(_.find(p2, {"id": obj.id}), obj)
});
如果你不改名字,情况就是这样
更新:
使用此选项可以将p1中的所有内容都包含在p2中,即使其id不匹配
_.forEach(p1, function(obj){
var p2Obj = _.find(p2, {"id": obj.id});
if(p2Obj){
_.merge(p2Obj, obj);
}else{
p2 = _.concat(p2,[p2Obj]);
}
});
这个答案看起来很好也很简单,我唯一的问题是合并只返回2个结果而不是3个?谢谢!我用的是lodash 3,我没有,我会看看这是否仍然有效possible@lost9123193
\uuu.union
也应该有效,如果不使用普通的JSp2.push[p2Obj]
这个答案看起来非常好而且简单,我唯一的问题是合并只返回2个结果,而不是3个?谢谢!我用的是lodash 3,我没有,我会看看这是否仍然有效possible@lost9123193如果不使用普通的JSp2.push[p2Obj]