js多级属性对象转换为一级属性对象(es5)

简单的遍历和递归。

转换前:

{
  singleProp: 1,
  multiProp: {
    a: 2,
    b: {
      x: 3,
      y: 4
    }
  }
}

转换后:

{
  singleProp: 1,
  multiProp.a: 2,
  multiProp.b.x: 3,
  multiProp.b.y :4
}

具体方法:

function multToSingleObj(obj) {
  var newObj = {};
  for (var key in obj) {
    var tempAttr = obj[key];
    if (typeof (tempAttr) !== "object") {
      newObj[key] = tempAttr;
    } else {
      var subObj = multToSingleObj(tempAttr);
      for (var subKey in subObj) {
        newObj[key + "." + subKey] = subObj[subKey];
      }
    }
  }
  return newObj;
}


本文章来自 Bydraw Space


本文链接:https://bydraw.github.io/2018/04/12/20180412/