function multiplyAll(arr) {
var product = 1;
for ( var i = 0; i< arr.lenght; i++) {
for (var j=0; j < arr[i].lenght; j++) {
product *= arr[i][j];
}
}
return product;
}
var product = multiplyAll([[1,2], [3,4],[5,6,7]]);
console.log(product);
我预计会得到
5000+
作为答案
您的两个
for
循环都有一个拼写错误:该属性称为 length
,而不是 lenght
。在 JavaScript 中,访问不存在的属性的结果是 undefined
。如果 0 < undefined
是数字,则 false
的计算结果为 x
,因此外部和内部 for
循环不会运行,您将得到 1
。修复拼写错误,它会按预期工作(我还建议使用 let
和 const
而不是 var
):
function multiplyAll(arr) {
let product = 1;
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr[i].length; j++) {
product *= arr[i][j];
}
}
return product;
}
const product = multiplyAll([[1,2], [3,4],[5,6,7]]);
console.log(product);
可以通过使用
for
-of
循环来避免此类错误:
function multiplyAll(arr) {
let product = 1;
for (const subarr of arr)
for (const num of subarr)
product *= num;
return product;
}
const product = multiplyAll([[1,2], [3,4],[5,6,7]]);
console.log(product);
reduce
:
const multiplyAll = (arr) => arr.reduce((prod, subarr) => prod * subarr.reduce((prod, num) => prod * num, 1), 1);
const product = multiplyAll([[1,2], [3,4],[5,6,7]]);
console.log(product);
flat
:
const multiplyAll = (arr) => arr.flat().reduce((prod, num) => prod * num, 1);
const product = multiplyAll([[1,2], [3,4],[5,6,7]]);
console.log(product);