美文网首页
数据格式转换

数据格式转换

作者: WEB小斗者 | 来源:发表于2021-11-18 13:40 被阅读0次
    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)
    }

相关文章

网友评论

      本文标题:数据格式转换

      本文链接:https://www.haomeiwen.com/subject/xlbdtrtx.html