对于这个模糊的问题,我表示歉意。希望我的示例可以使我的问题更加清楚...
所以我有一个像这样的分层数据结构:

var Company = {
    root: {
        title: 'CEO',
        employees: [{
            title: 'Vice President',
            employees: [{
                title: 'Sales Lead'
            }, {
                title: 'Marketing Lead'
            }]
        }]
    }
};


我的问题是如何找出根对象中的雇员总数?直观地看到,公司中有3名员工。我正在与递归合作以尝试解决此问题,但我似乎无法使其正常运行……或根本无法解决该问题。我感谢任何帮助,技巧或建议:)

最佳答案

您可以将.reduce与可递归调用的命名函数一起使用。基本情况是对象没有雇员。

const totalEmployees = Company.root.employees.reduce(countEmployees, 0);

function countEmployees(prev, next) {
    // count *this* employee
    let sum = prev + 1;
    if (next.employees && next.employees.length) {
      // count any nested employees
      sum += next.employees.reduce(countEmployees, 0);
    }
    return sum;
}

关于javascript - 我如何深入遍历类似JSON的数据结构以返回总计,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35496745/

10-11 13:30