javascript中的递归对象映射

Gop*_*esh 0 javascript arrays recursion json

我正在尝试从 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"
  }
};
Run Code Online (Sandbox Code Playgroud)

如果我调用一个方法

format(requestObj, processedObj);
Run Code Online (Sandbox Code Playgroud)

我需要得到输出

{
  id: 10,
  name: "John Doe",
  age: 20,
  obj: {
    id: 100
  }
Run Code Online (Sandbox Code Playgroud)

工作小提琴

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

abh*_*jia 5

在您的原始代码中需要更正一些事情,当您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)
Run Code Online (Sandbox Code Playgroud)