Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.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-将两个数组分组/求和为对象_Javascript_Lodash - Fatal编程技术网

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];
我尝试过使用lodash
zibObject()
,但是没有办法用这个函数求和。我想使用
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稍微好一点