如何遍历值可能为对象的JavaScript嵌套对象?
如何遍历值可能为对象的JavaScript对象?
感谢@WiktorZychla提醒我用递归的思路,周一的脑子一下子就清醒过来了!现在这个遍历方案已经可以正常运行啦。
假设我们有这样一个包含嵌套对象的示例:
const dummy = { a: 1, b: 2, c: { d: 3, e: { f: 4 } }, g: 5 };
我写了一个递归函数来完成深度遍历,它会自动识别属性值是否为对象(特意排除了null的情况,因为typeof null会返回'object'),如果是对象就继续递归遍历,直到遇到非对象类型的属性时输出完整路径:
const xavier = (value, s) => { for (const key in value) { // 确保只遍历对象自身的属性,不包含原型链上的属性 if (value.hasOwnProperty(key)) { if (typeof value[key] === 'object' && value[key] !== null) { // 递归调用,拼接当前属性路径 xavier(value[key], s + '.' + key); } else { // 输出最终的属性路径 console.log(s + '.' + key + '...'); } } } }
调用这个函数的时候,需要传入目标对象和初始的路径前缀,比如我们传入示例对象和它的变量名:
xavier(dummy, 'dummy');
运行后会得到如下输出:
dummy.a... dummy.b... dummy.c.d... dummy.c.e.f... dummy.g...
内容的提问来源于stack exchange,提问作者Chris Olaf
相关产品推荐
相关产品推荐

