对象扁平化

实现一个方法 flat(obj) 将下面对象做扁平化处理,输出如下

let obj = {
      a: {
        b: 1,
        c: 2,
        d: { e: 5 }
      },
      b: [1, 3, { a: 2, b: 3 }],
      c: 3
    }

/*
{
  a.b: 1
  a.c: 2
  a.d.e: 5
  b.0: 1
  b.1: 3
  b.2.a: 2
  b.2.b: 3
  c: 3
}
*/

递归的代码实现

    function flat(obj) {
      // 你的代码
      const back = {};
      recursion(obj, null);
      function recursion(o, prev) {
        for (let key in o) {
          if (o[key] instanceof Object) {
            if (prev === null) {
              recursion(o[key], key);
            } else {
              recursion(o[key], prev + '.' + key);
            };
          } else {
            if (prev === null) {
              back[key] = o[key];
            } else {
              back[prev + '.' + key] = o[key];
            };
          };
        };
      };
      console.log(back);
      return back;
    };
    // 最终效果是执行
    flat({
      a: {
        b: 1,
        c: 2,
        d: { e: 5 }
      },
      b: [1, 3, { a: 2, b: 3 }],
      c: 3
    })
posted @ 2022-04-11 08:02  真的想不出来  阅读(461)  评论(0编辑  收藏  举报