键值对中的下划线求和值

Underscore summing values in key value pairs

我有以下对象:

{key: [{thing: value, stuff: value}, {thing: value, stuff: value}], key2: [{thing: value, stuff: value}, {thing: value, stuff: value}]}

对于每个键,我想为每个键获取一个只有填充值的数组,或者更好的是为每个键获取填充值的总和。填充值是我想要求和的数字。我整天都在做这件事,我已经束手无策了。

这是数据的确切形式: 顶层: [Array[1], Array[1], Array[3], Array[1], Array[1], Array[1], Array[2], Array[1], Array[1], Array[1], Array[1], Array[1], Array[1], Array[1], Array[1]]

这里是数组[3]:

2: Array[3]

Array[3]中的第一个对象:

0: 对象

对象内容:

Amounts: Array[3]
Avg: 1202.38
Bill: 871.43

每个对象中还有另外十几个键值对。我想对已经按用户分组的每个数组的所有 "Bill" 求和。 Bill 存在于每个数组中的每个对象中。

为了获得您在最顶部看到的版本,我做了:

_.groupBy(_.flatten(BigArray),'Name');

我认为这将是朝着正确方向迈出的一步,因为它明确了用户是谁,因为我需要每个名称的总帐单。

这是你想要的吗?

var d = {
  key: [{
    thing: "a",
    stuff: 1
  }, {
    thing: "b",
    stuff: 2
  }],
  key2: [{
    thing: "a",
    stuff: 3
  }, {
    thing: "b",
    stuff: 4
  }]
};
var result = _.map(d, function(arr, key) {
  var stuffValues = _.pluck(arr, 'stuff');
  return {
    key: key,
    stuffSum: _.reduce(stuffValues, function(memo, num) {
      return memo + +num;
    }, 0)
  };
});
document.getElementById('output').textContent = JSON.stringify(result);
// => [{"key":"key","stuffSum":3},{"key":"key2","stuffSum":7}]
<script src="//underscorejs.org/underscore-min.js"></script>
<pre id="output"></pre>