如何使用lodash减少数组

时间:2015-08-04 13:25:48

标签: lodash

我有以下数组:

arr = [
    [
        [1, 2],
        [3, 4],
        [5, 6]
    ],
    [
        [7, 8],
        [9, 10],
        [11, 12]
    ],
    [
        [13, 14],
        [15, 16],
        [17, 18]
    ]
];

如何使用lodash减少以下内容:

[[9,12],[27,30],[45,48]]

我是一个完整的菜鸟。除此之外,我不知道该怎么做:

_.forEach(arr, function (n) {
    console.log(JSON.stringify(_.zip(n)));
});

请一些提示。

2 个答案:

答案 0 :(得分:3)

混合使用lodash(_.unzip()_.sum())和数组方法(Array#map()):

var result = arr.map(function(a) {
  return _.unzip(a).map(_.sum);
});

答案 1 :(得分:0)

与您的尝试类似,mapzipWith& add有一些partialRight帮助: - )

var zipAdd = _.partialRight(_.zipWith, _.add)
var result = _.map(arr, function(a) {
  return zipAdd.apply(null, a)
});

工作代码段



var arr = [
  [
    [1, 2],
    [3, 4],
    [5, 6]
  ],
  [
    [7, 8],
    [9, 10],
    [11, 12]
  ],
  [
    [13, 14],
    [15, 16],
    [17, 18]
  ]
];

var zipAdd = _.partialRight(_.zipWith, _.add)
var result = _.map(arr, function(a) {
  return zipAdd.apply(null, a)
});

alert(JSON.stringify(result));

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.0/lodash.min.js"></script>
&#13;
&#13;
&#13;