对象降维

204 阅读1分钟

不知道该取啥名字😥,需求是类似下面的objArrs数组,转化为父级key.子级key的属性,对应非对象的value

 var obj = {
      name: 'xm',
      del: {
        hah: 'fda',
        fdafda: 'fdas',
        fa: {
          xx: '嘻嘻',
          dd: 'dafad'
        }
      }
    }
var objArr = [obj, obj, obj, obj];

再把每个降低维度之后的对象,存储在原index对应的下标的数组中

    var tableTh = [];   //装所有的拼接起来的key
    var tableValue = [];  //装所有的非对象value
    objArr.forEach((obj, idx) => {
      tableValue[idx] = {};
      dealTableData(obj, idx);
    });

    function dealTableData(currentObj, currentIdx, parentKey) {
      const currentKeys = Object.keys(currentObj);
      currentKeys.length && currentKeys.forEach((key, idx) => {
        const linkKey = parentKey ? `${parentKey}.${key}` : key;
        if ('Object' == Object.prototype.toString.call(currentObj[key]).slice(8, -1)) {
          dealTableData(currentObj[key], currentIdx, linkKey);
        }
        else {
          !tableTh.includes(linkKey) && this.tableTh.push(linkKey);
          tableValue[currentIdx][linkKey] = currentObj[key];
        }
      });
    }

    console.log('获取到的数据', tableTh, tableValue)

酱紫,就可以获取到简单的对象啦