首页 > 解决方案 > 如何在javascript中将数组转换为嵌套对象

问题描述

我正在尝试使用 javascript 从嵌套数组生成嵌套对象。但至今未能成功。

下面是数组示例。

let arr = [
      '25',
      '25_29',
      '25_28',
      '25_28_35',
      '25_28_35_36',
      '20',
      '20_27',
      '20_26',
      '18',
      '18_48',
      '59',
      '34'
    ];

下面是对象示例。

let Obj = {
      25: {
        key: 25,
        child: {
          29: {
            key: 29, child: {}
          },
          28: {
            key: 28,
            child: {
              key: 35,
              child: {
                key: 36,
                child: {}
              }
            }
          }
        }
      },
      20: {
        key: 20,
        child: {
          27: {
            key: 27,
            child: {}
          },
          26: {
            key: 26,
            child: {}
          }
        }
      }
    }

有没有可能做同样的事情?

标签: javascriptobject

解决方案


let arr = ['25', '25_29', '25_28', '25_28_35', '25_28_35_36', '20', '20_27', '20_26', '18', '18_48', '59', '34'];

let obj = arr.reduce((obj, v) => {
  let keys = v.split('_');
  let o = obj;
  keys.forEach(key => {
    o[key] = o[key] || {key, child: {}};
    o = o[key].child;
  });
  return obj;
}, {});

console.log(obj);


推荐阅读