如何累积 _.zip、_.map _.reduce 操作?

How can I cumulate _.zip, _.map _.reduce operations?

给出一个 JSON 作为这个:

var data = {
  "entries": [
    {
      "fund": 1,
      "values": [
        { "name": "alm1", "splits": [ 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]},
        { "name": "alm2", "splits": [ 0,   0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]}
      ]
   },
    {
      "fund": 2,
      "values": [
        { "name": "alm1", "splits": [ 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] },
        { "name": "alm2", "splits": [ 1.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] },
        { "name": "alm3", "splits": [ 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0] }
      ]
    }
  ]
};

我可以将 "sums" 属性 设置为 lodash/underscore :

var expected = {
  "entries": [
    {
      "fund": 1,
      "values": [
        { "name": "alm1", "splits": [ 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]},
        { "name": "alm2", "splits": [ 0,   0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]}
      ],
      "sums":                       [ 0.5, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
   },
    {
      "fund": 2,
      "values": [
        { "name": "alm1", "splits": [ 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] },
        { "name": "alm2", "splits": [ 1.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] },
        { "name": "alm3", "splits": [ 2,   0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0] }
      ],
      "sums":                       [ 4,   0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    }
  ],
  "sums":                           [ 4.5, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0]
};

我用 lodash 尝试了不同的方法,但没有成功。 _.map()、_.reduce() 或 _.zip()

是否可以cumulate/chain调用得到预期的结果?

非常感谢您的帮助。

我认为 unzip() 更适合您的工作:

var a1 = [ 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
    a2 = [ 1.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
    a3 = [ 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];

_([a1, a2, a3])
    .unzip()
    .map(_.sum)
    .value()
// → [4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]