use*_*550 1 javascript recursion for-loop
arr将是一个数组,包含整数、字符串和/或像它本身一样的数组。将数组嵌套中任意位置找到的所有整数相加。
这是我想出来的,但仍然不正确
function arraySum(arr) {
var sum = 0;
var sum1 = 0;
for (var i = 0; i < arr.length; i++) {
if (arr[i] === Math.round(arr[i])) { //check if its an integar
sum += arr[i];
}
if (arr[i] instanceof Array) {
for (var n = 0; n < arr[i].length; n++) {
sum1 += arr[i][n];
}
}
}
console.log(sum + sum1);
}
var sumArr = [[[[[[[[[1]]]]]]]], 1]; // => 101. SHOULD BE 2
arraySum(sumArr);
Run Code Online (Sandbox Code Playgroud)
function arraySum(arr) {
var sum = 0;
for (var i = 0; i < arr.length; i++) {
if (arr[i] instanceof Array) { sum += arraySum(arr[i]);}
if (arr[i] === Math.round(arr[i])) {sum += arr[i];}
}
return sum;
}
Run Code Online (Sandbox Code Playgroud)
递归使用怎么样reduce?
function arrSum(arr) {
return arr.reduce(function fn(a, b) {
if (Array.isArray(b)) {
return b.reduce(fn, a);
} else if (b === Math.round(b)) {
return a + b;
}
return a;
}, 0);
}
Run Code Online (Sandbox Code Playgroud)
reduce() 方法对累加器应用函数,并且数组的每个值(从左到右)都必须将其减少为单个值。
| 归档时间: |
|
| 查看次数: |
7723 次 |
| 最近记录: |