我正在尝试展平一个对象,其中的键将是叶节点的完整路径。我可以递归地识别哪些是叶节点,但在尝试构建整个路径时遇到了困难。
示例输入:
{ 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/