在JavaScript中添加多维数字数组的总和

时间:2016-03-24 12:07:30

标签: javascript arrays

这似乎是一个给定但我想要一个答案,我只使用我认为是函数式编程...所以没有for()循环。假设我有一个多维数组,其中只包含数字和数字的数组!像这样:

var numberArray = [[1,5,12],[1,-1], [5,11,45,-3],[0,1,2] ... ];

现在我不想使用嵌套循环,而是使用.forEach和/或.reduce来获取numberArray中所有数字的总和,但是我还想执行一个操作这样在添加时可以省略任何负数或给出值0。我觉得这样的事情会奏效:

numberArray.reduce(function(a, b) {
    a.concat(b);
}, []);

但我不知道如何执行动作将负数设置为0(或只是省略它们)然后得到总和......

3 个答案:

答案 0 :(得分:1)

您可能需要减少两次。

试试这个

numberArray.reduce(function(prev,current){return prev.concat(current)}).reduce(function(prev,current){return prev+current});

<强>样本

&#13;
&#13;
    var numberArray = [[1,5,12],[1,-1], [5,11,45,-3],[0,1,2]];
    var output = numberArray.reduce(function(prev,current){return prev.concat(current)}).reduce(function(prev,current){return prev+current});
    document.body.innerHTML += output;
&#13;
&#13;
&#13;

答案 1 :(得分:1)

尝试在此上下文中使用嵌套的reduce

var numberArray = [[1,5,12],[1,-1], [5,11,45,-3],[0,1,2]]
var x = numberArray.reduce(function(a, b) {
    return a + b.reduce(function(c,d){
       return c + ((d > 0) ? d : 0);
    }, 0);
}, 0);
console.log(x); //206

答案 2 :(得分:1)

两次使用Array#reduce()

{{1}}