题目:对象字符串转化成树形结构
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
}
|