Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我需要帮助才能得到多维数组的和_Javascript_Sum - Fatal编程技术网

Javascript 我需要帮助才能得到多维数组的和

Javascript 我需要帮助才能得到多维数组的和,javascript,sum,Javascript,Sum,var nestedArr3=[[1,2],[3,4],[[5,6]]; 函数sumTotal(){ var总和=0; 对于(变量i=0;i

var nestedArr3=[[1,2],[3,4],[[5,6]];
函数sumTotal(){
var总和=0;
对于(变量i=0;i一些问题:

  • 如果要尝试递归解决方案,最好在再次调用
    sumTotal
    之前只尝试递归一个元素,否则会重复(湿)代码

  • 使用递归时,您需要在末尾返回结果,以便调用者可以访问结果

  • Array.isArray(nestedArr3[i][j]==true))
    看起来像是打字错误-将
    true
    移到
    Array.isArray
    调用之外

以下是工作代码:

var nestedArr3=[[1,2],[3,4],[[5,6]]
函数总和(arr){
var总和=0;
对于(变量i=0;iconsole.log(sumTotal(nestedArr3))首先需要展平阵列。我从中使用这个函数

从那里,您可以使用reduce

var result = flattenDeep(nestedArr3).reduce((a,c) => a+c);

如果您只想用for循环来解决它,那么您的数组中缺少了一个额外的维度。解决方案应该是这样的:

function total(array) {
var sum = 0

for (var i = 0; i < array.length; i++) {
    for (var j = 0; j < array[i].length; j++) {
      for (var k = 0; k < array[i][j].length; k++) {
        if (typeof array[i][j][k] === 'number') {
          sum += array[i][j][k]
        }
      }
    }
  }
  return sum
}

console.log(total([[[1,2],[3,4]],[[5,6]]]))
函数总数(数组){
var总和=0
对于(var i=0;i
,如果使用此代码使用递归获取,请不要这样做。我已经对它进行了更改,使其正常工作。请看一看

始终确保编写一个可重用的函数,这就是为什么这里它将1个参数作为数组

我使用了filter()方法来获取数组元素的和。检查
详情请参阅

函数sumTotal(nestedArr3){
总和=0
对于(变量i=0;inum1+num2);
}否则
if(Array.isArray(nestedArr3[i])==true){
总和+=总和(Nestedar3[i]);
}            
}
回报金额
}
//试验
var nestedArr3=[[1,2],[3,4],[[5,6]];
console.log(sumTotal(nestedArr3))//21
用于展平数组,然后使用

var nestedArr3=[[1,2],[3,4],[[5,6]];
var sum=nestedArr3.join().split(',').reduce((总计,当前)=>{
return total++curr//+curr是parseInt的缩写
}, 0)
控制台日志(总和)
function total(array) {
var sum = 0

for (var i = 0; i < array.length; i++) {
    for (var j = 0; j < array[i].length; j++) {
      for (var k = 0; k < array[i][j].length; k++) {
        if (typeof array[i][j][k] === 'number') {
          sum += array[i][j][k]
        }
      }
    }
  }
  return sum
}

console.log(total([[[1,2],[3,4]],[[5,6]]]))
function sumTotal(nestedArr3) {
    sum = 0
    for(var i = 0; i < nestedArr3.length; i++) {
        if(typeof nestedArr3[i] === "number"){
            return nestedArr3.reduce((num1, num2) => num1 + num2);
        } else 

        if(Array.isArray(nestedArr3[i]) === true){
            sum += sumTotal(nestedArr3[i]);
        }            
    }
    return sum
}

// TEST
var nestedArr3 = [[[1,2],[3,4]],[[5,6]]];

console.log(sumTotal(nestedArr3)) // 21