Full path of a json object

前端 未结 9 757
忘了有多久
忘了有多久 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:53

    var obj = {
      one: 1,
      two: {
        three: 3
      },
      four: {
        five: 5,
        six: {
          seven: 7
        },
        eight: 8
      },
      nine: 9
    };
    
    function flatten(obj) {
      var flatObj = {}
    
      function makeFlat(obj, path) {
        var keys = Object.keys(obj);
        if (keys.length) {
          keys.forEach(function (key) {
            makeFlat(obj[key], (path ? path + "." : path) + key);
          })
        } else {
          flatObj[path] = obj;
        }
      }
      makeFlat(obj, "");
      return flatObj;
    }
    
    console.log(flatten(obj));

提交回复
热议问题