对象扁平化

实现一个方法 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 @   真的想不出来  阅读(471)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示