let source = {"a.b.c": "1", "a.d": "2", "e": "3"}
let flat = function(source){
let obj = {}
for(let item in source){
if(item.length>1){
let arr = item.split("."),
cArr = Array.from(arr)
// 第一种思路
recAddObj(cArr,obj,source[item])
// 第二种思路
// const itemObj = recAddObj(cArr,obj)
// itemObj[arr[arr.length-1]] = source[item]
}else{
obj[item] = source[item]
}
}
return obj
}
function recAddObj(arr,obj,val){
return arr.reduce((prev,item,index,array)=>{
if(prev[item]){
return prev[item]
}
var recObj = {}
if(index==arr.length-1){
recObj = val
}
prev[item] = recObj
return recObj
},obj)
}
// function recAddObj(arr,obj,fObj){
// if(arr.length<= 0){
// return fObj
// }
// var key = arr.shift()
// if(obj[key]){
// return recAddObj(arr,obj[key],obj)
// }
// var recObj = {}
// obj[key] = recObj
// return recAddObj(arr,recObj,obj)
// }
// 在此处添加代码实现flat函数逻辑
var target = flat(source)
console.log(target)