在JavaScript中添加多维数字数组的和
这似乎是一个给定的问题,但我想要一个答案,我只使用我认为是函数式编程的东西。。。因此()循环没有在JavaScript中添加多维数字数组的和,javascript,arrays,Javascript,Arrays,这似乎是一个给定的问题,但我想要一个答案,我只使用我认为是函数式编程的东西。。。因此()循环没有。假设我有一个多维数组,它只包含数字和数字的数组!大概是这样的: var numberArray = [[1,5,12],[1,-1], [5,11,45,-3],[0,1,2] ... ]; 现在,我希望使用.forEach和/或.reduce来获得numberArray中所有数字的总和,而不是使用嵌套循环,但是,我还希望执行一个操作,以便在进行加法时忽略任何负数或赋予值0。我认为这样做会奏效:
。假设我有一个多维数组,它只包含数字和数字的数组!大概是这样的:
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(或忽略它们),然后获得总和 您可能需要做两次reduce
试试这个
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输出=numberArray.reduce(函数(prev,current){return prev.concat(current)}).reduce(函数(prev,current){return prev+current});
document.body.innerHTML+=输出代码>在此上下文中尝试使用嵌套的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
使用两次。
var numberArray=[[1,5,12],[1,-1],[5,11,45,-3],[0,1,2],
sum=numberArray.reduce(函数(r,a){
返回a.reduce(函数s,b){
返回b>0?s+b:s;
},r);
}, 0);
文件。填写(金额)代码>降低标记但没有理由?我没有想到使用嵌套的.reduce@是的。如果您在reduce内部进行concat,那么这也将被视为一次迭代。因此NxN+N
将成为运行时间。但是如果使用嵌套的reduce,运行时间将是NxN
。在使用函数编程特性时,我们必须考虑性能。