Full path of a json object

前端 未结 9 701
忘了有多久
忘了有多久 2021-01-12 06:02

I\'m trying to flatten an object where the keys will be the full path to the leaf node. I can recursively identify which are the leaf nodes but stuck trying to construct the

9条回答
  •  别那么骄傲
    2021-01-12 06:56

    You could use a recursive approch and collect the keys of the object. This proposal looks for arrays as well.

    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);

提交回复
热议问题