要对嵌套数组进行求和,首先需要理解嵌套数组的概念,即数组中的元素可能也是数组。这种情况下,不能直接对整个数组使用求和函数,需要递归地遍历数组中的每个元素,如果遇到数字就累加,如果遇到数组则递归调用自身。
以下是一个使用JavaScript语言实现的示例代码,它可以处理任意深度的嵌套数组并计算所有数字的总和:
function sumNestedArray(arr) {
let sum = 0;
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
sum += sumNestedArray(arr[i]); // 递归调用
} else if (typeof arr[i] === 'number') {
sum += arr[i]; // 累加数字
}
}
return sum;
}
// 示例使用
const nestedArray = [1, [2, [3, 4], 5], 6, [7, 8]];
console.log(sumNestedArray(nestedArray)); // 输出应为 36
function sumNestedArraySafe(arr, seen = new Set()) {
if (seen.has(arr)) return 0; // 检测到循环引用,直接返回0
seen.add(arr);
let sum = 0;
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
sum += sumNestedArraySafe(arr[i], seen); // 传递seen集合
} else if (typeof arr[i] === 'number') {
sum += arr[i];
}
}
return sum;
}
// 示例使用
const circularArray = [1, 2];
circularArray.push(circularArray); // 创建循环引用
console.log(sumNestedArraySafe(circularArray)); // 输出应为 3
通过这种方式,可以安全地对嵌套数组进行求和,即使存在循环引用也不会导致程序崩溃。
领取专属 10元无门槛券
手把手带您无忧上云