在this post on SO之后,我想使用lodash实现最简单的数据操作。
但我真的不知道该怎么做。
问题:
var months = ["jan", "feb", "mar", "apr"];
var cashflows = [
{'month':'jan', 'value':10},
{'month':'mar', 'value':20}
];
我想:
[
{'month':'jan', 'value':10},
{'month':'feb', 'value':''},
{'month':'mar', 'value':20},
{'month':'apr', 'value':''}
];
注意:我希望解决方案对losash函数的调用较少,以提高可读性。
答案 0 :(得分:2)
这是一个lodash解决方案maps在几个月的数组中创建你想要的结构:
var result = _.map(months, function(month){
return {
month: month,
value: _.chain(cashflows)
.find({month: month})
.get('value', '')
.value();
}
});
答案 1 :(得分:0)
在普通的Javascript中,您可以对给定数据使用哈希表,并根据months
顺序重建结果。
var months = ['jan', 'feb', 'mar', 'apr'],
cashflows = [{ month: 'jan', value: 10 }, { month: 'mar', value: 20 }],
result = months.map(function (m) {
return this[m] || { month: m, value: '' };
}, cashflows.reduce(function (r, a) {
r[a.month] = a;
return r;
}, Object.create(null)));
console.log(result);

.as-console-wrapper { max-height: 100% !important; top: 0; }