我没有在 javascript 中使用嵌套的 for 循环获得正确的输出

I am not getting proper output with nested for-loop in javascript

我应该得到多维数组的乘法值。但是无论数组中的值发生什么变化,我都会得到“1”作为输出。

function arrayMultiplyer(arr){
    var multi = 1;
    for(var i=0;i < arr.length; i++){
        for(var j =0; j<arr[i];j++){
            multi *= arr[i][j];
        }

    }

    return multi;
}

var multi = arrayMultiplyer([[2,33],[33,2],[5,6,9]]);
console.log(multi);

您需要在 j 循环中检查 arr[i].length

function arrayMultiplyer(arr){
    var multi = 1;
    for(var i=0;i < arr.length; i++){
        for(var j =0; j<arr[i].length;j++){ // you need to check arr[i].length here
            multi *= arr[i][j];
        }

    }

    return multi;
}

var multi = arrayMultiplyer([[2,33],[33,2],[5,6,9]]);
console.log(multi);

使用 .reduce()

的替代解决方案
function arrayMultiplier(arr) {
  return arr.reduce((tot,arr2) => 
    arr2.reduce((subTot, n) => 
      subTot * n
    , tot)
  , 1);
}

您只需分两行即可。

function arrayMultiplyer(arr){
  let flattenedArray = arr.flat();  
  return flattenedArray.reduce((x, y) => x * y);
}

var multi = arrayMultiplyer([[2,33],[33,2],[5,6,9]]);
console.log(multi);