javascript - 如何对嵌套数组中的所有元素求和?

标签 javascript arrays recursion

这是一个给出的数组:

let arrayNumbers = [ 5, 7, 
        [ 4, [2], 8, [1,3], 2 ], 
        [ 9, [] ], 
        1, 8
      ];

并且输出必须是 50
此代码必须是 WITHOUT Array.isArray;
let sum = 0;
function treeSum(array) {
    for (let i = 0; i < array.length; i++) {
        if (array[i] === false) {
            treeSum(array[i]);
        } else {
            sum += array[i];
        }
    }
    return sum;
}

treeSum(arrayNumbers);

帮助,请提供一个想法或代码,谢谢。

最佳答案

您需要使用本地 sum变量以及防止重复添加嵌套总和。
您可以检查该项目是否

  • Array 的一个实例与 instanceof operator , 的

    function treeSum(array) {
        var sum = 0;
        for (let i = 0; i < array.length; i++) {
            sum += array[i] instanceof Array ? treeSum(array[i]) : array[i];
        }
        return sum;
    }
    
    let arrayNumbers = [5, 7, [4, [2], 8, [1, 3], 2],  [9, []], 1, 8];
    
    console.log(treeSum(arrayNumbers));

  • Array作为 Object#constructor .

    function treeSum(array) {
        var sum = 0;
        for (let i = 0; i < array.length; i++) {
            sum += array[i].constructor === Array ? treeSum(array[i]) : array[i];
        }
        return sum;
    }
    
    let arrayNumbers = [5, 7, [4, [2], 8, [1, 3], 2],  [9, []], 1, 8];
    
    console.log(treeSum(arrayNumbers));

  • 关于javascript - 如何对嵌套数组中的所有元素求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59949920/

    相关文章:

    java - Java 编程中的数组

    algorithm - 为什么中位数算法被描述为使用 O(1) 辅助空间?

    php - 获取类别的所有项目及其子项

    javascript 使用这样的函数调用的目的是什么 (function() {//code; })();

    javascript - 禁用范围输入的 HTML5 拖放

    javascript - FF本地如何处理sessionStorage(测试用)

    c++ - 从递归堆栈帧返回时不保留值?

    javascript - 有 JavaScript strcmp() 吗?

    javascript - 如何在 Chrome 应用程序上使用 Javascript 通过 UDP 发送字符串

    php - 在多维 session 数组中插入和回显元素