我想将嵌套数组的数字加在一起

时间:2017-08-17 15:54:38

标签: javascript

这就是我提出的:

var nestedArr = [[[1,2],[3,4]],[[5,6]]];

function sumTotal() {
	for(var i = 0; i < nestedArr.length; i++) {
		for(var j = 0; j < nestedArr[i].length; j++) {
			for(var k = 0; k < nestedArr[i][j].length; k++) {
				var arrNumSum = nestedArr[i][j][k]; 
				arrNumSum += arrNumSum;

				return arrNumSum; 		
			}
		}
	}	
}

sumTotal();

3 个答案:

答案 0 :(得分:7)

您可以使用reduce()

创建递归函数

var nestedArr = [[[1,2],[3,4]],[[5,6]]];

function sum(arr) {
  return arr.reduce(function(r, e) {
    return r + (Array.isArray(e) ? sum(e) : e)
  }, 0)
}

console.log(sum(nestedArr))

答案 1 :(得分:0)

每次循环都会覆盖arrNumSum。而且,在第一次迭代之后,你很快就会回来。试试这个:

var nestedArr = [[[1,2],[3,4]],[[5,6]]];

function sumTotal() {
	var arrNumSum = 0;
	for(var i = 0; i < nestedArr.length; i++) {
		for(var j = 0; j < nestedArr[i].length; j++) {
			for(var k = 0; k < nestedArr[i][j].length; k++) {
				arrNumSum += nestedArr[i][j][k];
			}
		}
	} 
	return arrNumSum; 		
}

console.log(sumTotal());

答案 2 :(得分:0)

您可以使用Array#reduce的重复调用以及命名函数作为回调。

MessagingCenter.Unsubscribe<MainPage, string> (this, "MapIntentReceived");