Javascript lodash-将两个数组分组/求和为对象
我有两个数组(一个是键,一个是值),我想将它们组合成一个对象,在键相同时求和值Javascript lodash-将两个数组分组/求和为对象,javascript,lodash,Javascript,Lodash,我有两个数组(一个是键,一个是值),我想将它们组合成一个对象,在键相同时求和值 var keys = ['a', 'b', 'a', 'c']; var values = [1, 2, 2, 3]; 我尝试过使用lodashzibObject(),但是没有办法用这个函数求和。我想使用zipWith()将是解决方案,但我不知道如何求和 var grouped = _.zipWith(keys, values, function(a,b){ return {a: b}; // not su
var keys = ['a', 'b', 'a', 'c'];
var values = [1, 2, 2, 3];
我尝试过使用lodashzibObject()
,但是没有办法用这个函数求和。我想使用zipWith()
将是解决方案,但我不知道如何求和
var grouped = _.zipWith(keys, values, function(a,b){
return {a: b}; // not summing: [{a: 1}, {b: 2}, {a, 2}, {c: 3}]
});
但我想要的是:
var result = {
a: 3,
b: 2,
c: 3
};
使用lodash实现这一目标的正确方法是什么?使用对象作为初始值:
var out = _.reduce(keys, function (p, c, i) {
p[c] = p[c] || 0;
p[c] += values[i];
return p;
}, {});
使用对象作为初始值:
var out = _.reduce(keys, function (p, c, i) {
p[c] = p[c] || 0;
p[c] += values[i];
return p;
}, {});
无lodash或下划线
var key=['a','b','a','c'];
var值=[1,2,2,3];
var={};
如果(keys.length!==values.length)抛出“数组不匹配!!”
for(变量i=0,len=keys.length;i
不带lodash或下划线
var key=['a','b','a','c'];
var值=[1,2,2,3];
var={};
如果(keys.length!==values.length)抛出“数组不匹配!!”
for(变量i=0,len=keys.length;i
不清楚您想做什么。我看不出键和值数组是如何联系在一起的。你是如何得到a
是3,b
是2,c
是3的?我已经编辑了这个问题,不清楚你想做什么。我看不出键和值数组是如何联系在一起的。你是如何得到a
是3,b
是2,c
是3的?我已经编辑了这个问题如果性能重要,似乎如果性能重要,似乎比@Andy answer稍微好一点,比@Andy answer稍微好一点