思路就是获取对象所有的key然后判断值是否为object对象,如果是就递归查找,不是就存入哈希表
const o = {
a: 1,
b: {
c: 1,
d: {
e: 2,
f: 3,
},
g: -1,
},
}
// 遍历所有json节点
function traverseJsonAllNode(o, map = {}) {
// 获取对象所有key值
Object.keys(o).forEach((key) => {
map[key] = o[key] // 将当前key-value存入map
if (Object.prototype.toString.call(o[key]) === '[object Object]') {
traverseJsonAllNode(o[key], map) // 如果value是对象 则继续递归子集
}
})
return map
}
console.log(traverseJsonAllNode(o))