这似乎是一个给定但我想要一个答案,我只使用我认为是函数式编程...所以没有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(或只是省略它们)然后得到总和......
答案 0 :(得分:1)
您可能需要减少两次。
试试这个
numberArray.reduce(function(prev,current){return prev.concat(current)}).reduce(function(prev,current){return prev+current});
<强>样本强>
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;
答案 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)