在JavaScript中,遍历未知深度的对象通常可以使用递归函数来实现,这种方法比嵌套到最大深度的map语句更加灵活和高效。下面是一个示例代码,展示了如何使用递归函数来遍历一个未知深度的对象:
function traverseObject(obj, callback) {
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
callback(key, obj[key]);
if (typeof obj[key] === 'object' && obj[key] !== null) {
traverseObject(obj[key], callback);
}
}
}
}
// 使用示例
const exampleObj = {
a: 1,
b: {
c: 2,
d: {
e: 3,
f: 4
}
},
g: 5
};
traverseObject(exampleObj, (key, value) => {
console.log(`Key: ${key}, Value: ${value}`);
});
function traverseObjectSafe(obj, callback, visited = new Set()) {
if (visited.has(obj)) return;
visited.add(obj);
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
callback(key, obj[key]);
if (typeof obj[key] === 'object' && obj[key] !== null) {
traverseObjectSafe(obj[key], callback, visited);
}
}
}
}
通过这种方式,可以有效避免因循环引用导致的无限递归问题。
领取专属 10元无门槛券
手把手带您无忧上云