如何实现获取嵌套数组中每个子数组的元素乘积功能?
实现嵌套数组子元素单独乘积计算
没问题,我来帮你调整函数,实现每个子数组单独计算元素乘积并返回指定格式的结果~
思路说明
原来的multiplyAll是用一个变量累积所有元素的总乘积,现在我们需要针对每个子数组单独计算乘积,然后把每个乘积结果包装成单元素数组,最终收集成嵌套数组返回。
基于原循环写法的修改版本
如果你习惯用for循环的写法,可以这样修改:
function multiplySubArrays(arr) { const result = []; // 遍历外层数组的每个子数组 for (let a = 0; a < arr.length; a++) { // 每个子数组单独初始化乘积变量,避免跨子数组累积 let subProduct = 1; // 遍历当前子数组的元素计算乘积 for (let b = 0; b < arr[a].length; b++) { subProduct *= arr[a][b]; } // 将子数组乘积包装为单元素数组,加入结果集合 result.push([subProduct]); } return result; } // 测试调用,输出 [[2],[12],[210]] console.log(multiplySubArrays([[1,2],[3,4],[5,6,7]]));
更简洁的数组方法写法
如果想用更现代的数组API(map+reduce),可以写成更简洁的版本:
const multiplySubArrays = arr => arr.map(subArr => { // 用reduce计算当前子数组的乘积,初始值设为1 const product = subArr.reduce((accumulator, currentNum) => accumulator * currentNum, 1); // 返回包装后的单元素数组 return [product]; }); // 测试调用,同样输出目标结果 console.log(multiplySubArrays([[1,2],[3,4],[5,6,7]]));
这两种写法都能满足需求,你可以根据自己的代码风格选择~
内容的提问来源于stack exchange,提问作者user9279766
相关产品推荐
相关产品推荐

