组合并添加2个数组typescript、lodash和下划线

组合并添加2个数组typescript、lodash和下划线,typescript,lodash,Typescript,Lodash,我有一个如下所示的对象数组: [ {date: '2016-09-10', 'Post': 5, 'Pickup': 2}, {date: '2016-09-11', 'Post': 8, 'Pickup': 2}, {date: '2016-09-12', 'Post': 0, 'Pickup': 2}, {date: '2016-09-12', 'Post': 3, 'Pickup': 0}, {date: '2016-09-13', 'Post':

我有一个如下所示的对象数组:

[  
  {date: '2016-09-10', 'Post': 5, 'Pickup': 2},  
  {date: '2016-09-11', 'Post': 8, 'Pickup': 2},  
  {date: '2016-09-12', 'Post': 0, 'Pickup': 2},  
  {date: '2016-09-12', 'Post': 3, 'Pickup': 0},  
  {date: '2016-09-13', 'Post': 1, 'Pickup': 2},  
  {date: '2016-09-13', 'Post': 1, 'Pickup': 0},  
]
[  
  {date: '2016-09-10', 'Post': 5, 'Pickup': 2},  
  {date: '2016-09-11', 'Post': 8, 'Pickup': 2},  
  {date: '2016-09-12', 'Post': 3, 'Pickup': 2},  
  {date: '2016-09-13', 'Post': 2, 'Pickup': 2},  
] 
pickup = [  
      {date: '2016-09-11', 'Post': 8, 'Pickup': 2},  
      {date: '2016-09-12', 'Post': 3, 'Pickup': 0},  
      {date: '2016-09-13', 'Post': 1, 'Pickup': 0},  
    ]  

post = [  
      {date: '2016-09-10', 'Post': 5, 'Pickup': 2},  
      {date: '2016-09-12', 'Post': 0, 'Pickup': 2},  
      {date: '2016-09-13', 'Post': 1, 'Pickup': 2},  
    ]
我需要按日期组合对象,并添加post+post和PICKEP+PICKEP,如下所示:

[  
  {date: '2016-09-10', 'Post': 5, 'Pickup': 2},  
  {date: '2016-09-11', 'Post': 8, 'Pickup': 2},  
  {date: '2016-09-12', 'Post': 0, 'Pickup': 2},  
  {date: '2016-09-12', 'Post': 3, 'Pickup': 0},  
  {date: '2016-09-13', 'Post': 1, 'Pickup': 2},  
  {date: '2016-09-13', 'Post': 1, 'Pickup': 0},  
]
[  
  {date: '2016-09-10', 'Post': 5, 'Pickup': 2},  
  {date: '2016-09-11', 'Post': 8, 'Pickup': 2},  
  {date: '2016-09-12', 'Post': 3, 'Pickup': 2},  
  {date: '2016-09-13', 'Post': 2, 'Pickup': 2},  
] 
pickup = [  
      {date: '2016-09-11', 'Post': 8, 'Pickup': 2},  
      {date: '2016-09-12', 'Post': 3, 'Pickup': 0},  
      {date: '2016-09-13', 'Post': 1, 'Pickup': 0},  
    ]  

post = [  
      {date: '2016-09-10', 'Post': 5, 'Pickup': 2},  
      {date: '2016-09-12', 'Post': 0, 'Pickup': 2},  
      {date: '2016-09-13', 'Post': 1, 'Pickup': 2},  
    ]
我更喜欢lodash和/或下划线。 谢谢

我从以下两个阵列开始:

[  
  {date: '2016-09-10', 'Post': 5, 'Pickup': 2},  
  {date: '2016-09-11', 'Post': 8, 'Pickup': 2},  
  {date: '2016-09-12', 'Post': 0, 'Pickup': 2},  
  {date: '2016-09-12', 'Post': 3, 'Pickup': 0},  
  {date: '2016-09-13', 'Post': 1, 'Pickup': 2},  
  {date: '2016-09-13', 'Post': 1, 'Pickup': 0},  
]
[  
  {date: '2016-09-10', 'Post': 5, 'Pickup': 2},  
  {date: '2016-09-11', 'Post': 8, 'Pickup': 2},  
  {date: '2016-09-12', 'Post': 3, 'Pickup': 2},  
  {date: '2016-09-13', 'Post': 2, 'Pickup': 2},  
] 
pickup = [  
      {date: '2016-09-11', 'Post': 8, 'Pickup': 2},  
      {date: '2016-09-12', 'Post': 3, 'Pickup': 0},  
      {date: '2016-09-13', 'Post': 1, 'Pickup': 0},  
    ]  

post = [  
      {date: '2016-09-10', 'Post': 5, 'Pickup': 2},  
      {date: '2016-09-12', 'Post': 0, 'Pickup': 2},  
      {date: '2016-09-13', 'Post': 1, 'Pickup': 2},  
    ]
我使用了数据=u.unionBy post,pickup,'date'; 和uqby数据“日期”

您可以在结果数组中为新日期使用并创建一个新对象,或者仅添加到POST和PICKUP(如果已经有):

var result = _.reduce(array, function (memo, el) {
  var d = _.find(memo, function(e) { return e.date === el.date });
  if (d) {
    d.Post += el.Post;
    d.Pickup += el.Pickup;
  } else {
    memo.push(_.clone(el));
  }
  return memo;
}, []);
变量数组=[ {日期:'2016-09-10','Post':5','Picking':2}, {日期:'2016-09-11','Post':8','Picking':2}, {日期:'2016-09-12','Post':0','Pickup':2}, {日期:'2016-09-12','Post':3','Picking':0}, {日期:'2016-09-13','Post':1','Picking':2}, {日期:'2016-09-13','Post':1','Picking':0} ]; 变量结果=\ u0.reducearray,函数备忘录,el{ var d=uu.findmemo,函数e{returne e.date==el.date}; 如果d{ d、 职位+=el.职位; d、 皮卡+=电动皮卡; }否则{ memo.push_.cloneel; } 返回备忘录; }, []; console.logresult;
@请参阅上面我的新编辑。我不熟悉lodash和下划线。如果这是一个问题,这将丢弃/覆盖数组中的原始对象。或者u.findWherememo,{date:el.date},如果您愿意的话。