Я пытаюсь написать функцию с именем twoDimensionalProduct(array)
, которая принимает двумерный массив
числа в качестве аргумента. Функция должна возвращать суммарный продукт всех
числа, перемноженные вместе.
Я могу решить эту проблему, используя вложенные традиционные циклы for. Это было мое решение:
function twoDimensionalProduct(array){
let prod = 1;
for(let i = 0; i < array.length; i++){
let subArr = array[i];
for(let j = 0; j < subArr.length; j++){
prod *= subArr[j]
}
}
return prod
}
let arra1 = [
[6, 4],
[5],
[3, 1]
];
console.info(twoDimensionalProduct(arra1)); // 360
Я пытаюсь понять, как решить те же проблемы, используя метод forEach или reduce. Может ли кто-нибудь помочь мне с лучшим подходом к этому?
Если вам нравятся однострочные, вот как это сделать в одну строчку.
let arra1 = [
[6, 4],
[5],
[3, 1]
];
let sum = arra1.flat(2).reduce((sum, val) => sum * val);
console.info(sum);
Сгладьте массив , а затем уменьшите по числам.
function twoDimensionalProduct(array){
return array.flat().reduce((acc, c) => acc * c);
}
let arra1 = [[6, 4],[5],[3, 1]];
console.info(twoDimensionalProduct(arra1));
Вы можете сопоставить массив для умножения внутри элементов, используя сокращение и, наконец, уменьшение внешнего массива.
const prod = arra1.map((arr) => {
return arr.reduce((a, b) => a * b);
}).reduce((a, b) => a * b);
console.info(prod);