let obj = {
A: 1,
"B.C": 2,
"C.DD.E": 2,
};
let obj2 = {
A: 1,
B: {
C: 2,
},
C: {
DD: {
E: 2,
},
},
};
const change = (arr) => {
let res = {}
const keyArray = Object.keys(obj)
const valArray = Object.values(obj)
const nameList = keyArray.map((item) => item.split("."))
nameList.forEach((keysArr, index) => {
let str = {}
const lastKey = keysArr.pop()
str[lastKey] = valArray[index]
let prevKey = lastKey
//如果有多层嵌套,会进入下面循环
while (keysArr.length) {
const chKey = keysArr.pop()
str[chKey] = { ...str }
delete str[prevKey]
prevKey = chKey
}
res = { ...res, ...str }
})
return res
}
console.log(change(obj))
const digui = (target, part) => {
Object.keys(part).forEach((item) => {
if (item in target) {
digui(target[item], part[item])
} else {
target[item] = part[item]
}
})
}
const change1 = (obj) => {
const res = {}
Object.keys(obj).forEach((keyList, index) => {
let k = {}
let propertyObject = k
keyList.split(".").forEach((aKey, index) => {
propertyObject[aKey] = {}
if (index === keyList.split(".").length - 1) {
propertyObject[aKey] = obj[keyList]
}
propertyObject = propertyObject[aKey]
})
digui(res, k)
})
return res
}
console.log(change1(obj))