遍历对象的所有子对象和子对象

Iterate through all children and children children of an object

我有一个带有子对象的对象,甚至还有曾孙对象。

我目前正在使用

for (const [key, value] of Object.entries(myObj)) {
  console.log(`${key}: ${value}`);
}

产生,例如:

如何遍历任意数量的子对象以return类似于

的东西

不需要“2 之 1”,但可以证明我的输出目标。

在这种情况下 recursion 很有用。例如:

function visitDescendants(obj, callback) {
    for (const [key, value] of Object.entries(obj)) {
        if (value && typeof value === "object") {
            // Recurse
            visitDescendants(value, callback);
        } else {
            callback(key, value);
        }
    }    
}

实例:

function visitDescendants(obj, callback) {
    for (const [key, value] of Object.entries(obj)) {
        if (value && typeof value === "object") {
            // Recurse
            visitDescendants(value, callback);
        } else {
            callback(key, value);
        }
    }    
}

const obj = {
    a: 1,
    message: "hi",
    b: {
        nestedMessage: "there",
        c: {
            furtherNestedMessage: "folks!"
        },
    },
};

visitDescendants(obj, (key, value) => {
    console.log(`${key}: ${value}`);
});