js实现多层级obj合并为一层级

某些时候为了兼容需要将多层级的object转为一层object来处理,仅保留最内层!这里使用原生js来实现

问题

将data多层级对象转为一级对象来处理:

data = {
    "one": {
        "name": "thanks",
        "sex": "man"
    },
    "two": {
        "money": 500,
        "car": {
            "color": "red",
            "vendor": "ford"
        }
    },
    "three": "just three"
}

处理后:

data = {
    "color": "red",
    "money": 500,
    "name": "thanks",
    "sex": "man",
    "three": "just three",
    "vendor": "ford"
}

实现

利用递归、对象合并来完成!

function objToOne(obj){
      var tmpData = new Object();
      for(var index in obj){
        if(typeof obj[index] == 'object'){
          var resObj = objToOne(obj[index]);
          Object.assign(tmpData,resObj);//这里使用对象合并
        }else{
          tmpData[index] = obj[index];
        }
      }
      return tmpData;
    }

使用

console.log(objToOne(data));

注意

  1. 这里的obj仅针对"key":"value"形式的数据!
  2. 适用于仅保留内层数据的需求

程序有疏漏之处欢迎指正

Author: thinkwei

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注