javascript - 如何遍历一个js对象并记录遍历路径?

标签 javascript algorithm

遍历一个对象很容易,但我发现自己很难找出遍历路径。

例如,这里我们有如下数据:

data = {
    a: 'A',
    b: {
        d: [
            'F',
            'G'
        ],
        e: 'D'
    },
    c: 'C'
}

我想输出这样的遍历路径:

['a']
['b', 'd', 0]
['b', 'd', 1]
['b', 'e']
['c']

如何编写算法?

最佳答案

function rec(currentObject, path) {
    if (typeof currentObject !== "string" && currentObject.length) {
        for (var i = 0; i < currentObject.length; i += 1) {
            rec(currentObject[i], path.concat(i));
        }
    } else if (typeof currentObject === "object") {
        for (var item in currentObject) {
            rec(currentObject[item], path.concat(item))
        }
    } else {
        console.log(path);
    }
}

rec(data, []);

输出

[ 'a' ]
[ 'b', 'd', 0 ]
[ 'b', 'd', 1 ]
[ 'b', 'e' ]
[ 'c' ]

关于javascript - 如何遍历一个js对象并记录遍历路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22164220/

相关文章:

algorithm - 到位排序

java - 找到所有组合的更有效方法?

c# - 访问二维数组中某个位置的邻居

javascript - 更新元素,带有选择选项

javascript - 两个并排彼此相对的无序列表

javascript - 如何修复单元测试 Angular 11 中的错误 "is not a function"

javascript - ES6 : What happens if the rest parameter is an array?

php - 页面加载时调用 javascript 链接

java - Android Flow游戏填充算法

javascript - 检查节点的对 Angular 邻居