0
点赞
收藏
分享

微信扫一扫

对象字符串转化成树形结构

let strarr = {
    'a-b-c-d': 1,
    'a-b-c-e': 2,
    'a-b-f': 3,
    'a-j': 4
}
let obj = {
    a: {
        b: {
            c: {
                d: 1,
                e: 2
            },
            f: 3
        },
        j: 4
    }
}

这边给了一种解法,先说下思路:

  • 创建一个空对象
  • 深度遍历给空对象赋值属性
  • 最后一个值直接赋值
function ObjectToTree(strarr) {
    let objTree = {}
    // 深度遍历
    const dfs = (pro_arr, obj, val) => {
        for (let i = 0; i < pro_arr.length - 1; i++) {
            // 如果没有就赋值新对象
            if (!obj[pro_arr[i]]) obj[pro_arr[i]] = {}
            obj = obj[pro_arr[i]]
        }
        // 最后一个直接赋值
        obj[pro_arr[pro_arr.length - 1]] = val
    }
    for (let keys in strarr) {
        dfs(keys.split('-'), objTree, strarr[keys])
    }
    return objTree
}
举报

相关推荐

0 条评论