对象键的展开
小于 1 分钟
对象键的展开
记录一道面试题,当时竟然没做出来:
let obj = {
"A.B.C.D":1,
"A.B.E.F":2
}
// 写一个方法实现如下结果
let result = {
A:{
B:{
C:{
D:1
},
E:{
F:2
}
}
}
}
代码:
function parseObject(obj) {
const result = {};
for (const key in obj) {
const keys = key.split('.');
let target = result; // 这个是重点
for (let i = 0; i < keys.length; i++) {
const k = keys[i];
if (i === keys.length - 1) {
target[k] = obj[key];
} else {
target[k] = target[k] || {};
target = target[k];// 将新对象赋值给target,让下次直接能访问新对象的属性
}
}
}
return result;
}
const obj = {
"A.B.C.D": 1,
"A.B.E.F": 2
};
const parsedObj = parseObject(obj);
console.log(parsedObj);