组合并添加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},如果您愿意的话。