我正在尝试展平一个对象,其中键将是叶节点的完整路径。我可以递归地确定哪些是叶节点,但是在尝试构建整个路径时遇到了困难。
输入样例:
{ 一:1, 二:{ 三:3 }, 四:{ 5:5 六:{ 七:7 }, 八:8 }, 9:9 }
输出:
{ 一:1, 'two.three':3, “四五”:5 “四六七”:7 '四八':8, 9:9 }
您可以使用递归方法并收集对象的键。该建议还寻找数组。
function getFlatObject(object) { function iter(o, p) { if (o && typeof o === 'object') { Object.keys(o).forEach(function (k) { iter(o[k], p.concat(k)); }); return; } path[p.join('.')] = o; } var path = {}; iter(object, []); return path; } var obj = { one: 1, two: { three: 3 }, four: { five: 5, six: { seven: 7 }, eight: 8 }, nine: 9 }, path = getFlatObject(obj); console.log(path);