javascript - 我如何深入遍历一个类似 JSON 的数据结构来返回一个总的东西

标签 javascript arrays recursion functional-programming

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

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/

相关文章:

javascript - 如何在 HttpHandler ProcessRequest 中获取字符串数组值?

java - 将 LongBuffer/IntBuffer/ShortBuffer 转换为 ByteBuffer

javascript - JSON 发送空数组

list - 如何将空列表作为列表的元素返回

python - 无限递归调用极小极大算法

javascript - 按键时从动态 dom 获取文本区域值

javascript - 使用 jquery 获取 facebook 点赞数出错

javascript - 如何在页面刷新后反转按位操作以标记复选框

java - 在单个文本文件中进行多次搜索

Firefox 3.6.6 和 4.0 beta 1 中的 jQuery 自定义事件和过多递归错误