javascript中的递归对象映射

时间:2017-05-12 06:46:59

标签: javascript arrays json recursion

我正在尝试从JavaScript中的另一个对象映射对象。像

var requestObj = {
  id: "",
  name: "",
  age: "",
  obj: {
    id: ""
  }
};

var processedObj = {
  id: 10,
  name: "John Doe",
  age: 20,
  family: true,
  obj: {
    id: 100,
    text: "Obj Desc"
  }
};

如果我调用类似

的方法
format(requestObj, processedObj);

我需要输出

{
  id: 10,
  name: "John Doe",
  age: 20,
  obj: {
    id: 100
  }

Working Fiddle

如果没有内部物体,一切都正常。我已经做了一个递归方法,但它没有按预期工作。请看看它

1 个答案:

答案 0 :(得分:4)

原始代码中需要更正一些内容,当您以递归方式调用format()函数时,您没有分配从函数返回的结果。 format()函数的参数似乎也不正确。

我稍微修改了你的代码。它会输出您想要的格式。



var requestObj = {
  id: "",
  name: "",
  age: "",
  obj: {
    id: ""
  }
};

var processedObj = {
  id: 10,
  name: "John Doe",
  age: 20,
  family: true,
  obj: {
    id: 100,
    text: "Obj Desc"
  }
};


format(requestObj, processedObj);

function format(requestObj, processedObj) {
  for (var keys in processedObj) {

    if (requestObj.hasOwnProperty(keys)) {
      if (typeof processedObj[keys] == 'object') {
        requestObj[keys] = format(requestObj[keys], processedObj[keys]);
      } else {
        requestObj[keys] = processedObj[keys];
      }


    }
  }
  return requestObj;
}

console.log(requestObj)