javascript - json 对象的完整路径

标签 javascript algorithm tree

我正在尝试展平一个对象,其中的键将是叶节点的完整路径。我可以递归地识别哪些是叶节点,但在尝试构建整个路径时遇到了困难。

示例输入:

{
  one: 1,
  two: {
    three: 3
  },
  four: {
    five: 5,
    six: {
      seven: 7
    },
    eight: 8
  },
  nine: 9
}

输出:

{
  one: 1,
  'two.three': 3,
  'four.five': 5,
  'four.six.seven': 7,
  'four.eight': 8,
  nine: 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);

关于javascript - json 对象的完整路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39547202/

相关文章:

JavaScript 从文件中读取

javascript - 由 5 位数字组成的正则表达式集,后跟一个逗号(尾随逗号可选)

javascript - 从一组约会中获取重叠时间范围的列表

c++ - 哈希表——哈希函数实现

algorithm - 在文件中表示二叉树

javascript - 从复选框标签中添加值

c++ - 比较 unordered_map 与 unordered_set

java - 在非常大的树上执行 DFS 的最佳方法是什么?

html - 从 HTML 文档树打印 CSS 的算法

javascript - 如何在不重新加载页面的情况下更新 Django 页面?