let oldData={
a38d7eed5fd6f0.a38d7eb9bb4b20.a38d7ef97e2f05: "2312121",
a38d7eed5fd6f0.a38d7eb9bb4b20.a38d7ebbbb48ec: "女"
}
将对象oldData的数据格式转换成:
let newData={
a38d7eed5fd6f0:{
a38d7eb9bb4b20:{
a38d7ef97e2f05:"2312121",
a38d7ebbbb48ec: "女"
}
}
}
直接上代码
//第一步
let handleReturnObj = (obj: any, path: string, value: any) => {
let pathArray: Array<string> = path.split(".");
for (let i: number = 0; i < pathArray.length; i++) {
try {
let key: string = pathArray[i];
if (i < pathArray.length - 1) {
if (obj[key] === undefined) {
obj[key] = {};
}
obj = obj[key];
continue;
}
if (value === undefined || value === null) {
obj[key] = "";
continue;
}
if (value instanceof Array) {
let newArr = [];
for (let item of value) {
if ((typeof item) === "string") {
newArr.push(item);
} else if (item instanceof Array) {
let newObj = [];
for (let data of item) {
newObj.push(data);
}
newArr.push(newObj);
} else if ((typeof item) === "object") {
let newObj = {};
for (const key in item) {
if (item.hasOwnProperty(key))
handleReturnObj(newObj, key, item[key]);
}
newArr.push(newObj);
}
}
obj[key] = newArr;
} else {
obj[key] = value;
}
} catch (e) {
console.error(e.toString());
}
}
}
//第二步
let MergeRecursive = (obj1, obj2) => {
let arr = Object.keys(obj2);
let index = -1;
while (++index < arr.length) {
let p = arr[index];
try {
if (obj2[p].constructor == Object) {
obj1[p] = MergeRecursive(obj1[p], obj2[p]);
} else {
obj1[p] = obj2[p];
}
} catch (e) {
obj1[p] = obj2[p];
}
}
return obj1;
}
//第三步
for (let key in oldData) {
let reObj: any = {};
handleReturnObj (reObj, key, oldData[key])
MergeRecursive(newData, reObj);
console.log(newData)
}
网友评论