键值对中的下划线求和值

时间:2015-03-31 23:51:19

标签: javascript underscore.js

我有以下对象:

{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]]

这是Array [3]:

2: Array[3]

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

0:对象

对象的内容:

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

每个对象中还有十几个键值对。我想总结所有的"比尔"对于每个已按用户分组的数组。 Bill存在于每个数组中的每个对象中。

要获得我在最顶层看到的版本:

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

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

1 个答案:

答案 0 :(得分:1)

这是你追求的吗?



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>
&#13;
&#13;
&#13;