Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Lodash筛选2个集合_Javascript_Arrays_Filter_Lodash - Fatal编程技术网

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
也应该有效,如果不使用普通的JS
p2.push[p2Obj]
这个答案看起来非常好而且简单,我唯一的问题是合并只返回2个结果,而不是3个?谢谢!我用的是lodash 3,我没有,我会看看这是否仍然有效possible@lost9123193如果不使用普通的JS
p2.push[p2Obj]