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;i console.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