【问题标题】:Recursive Object mapping in javascriptjavascript中的递归对象映射
【发布时间】:2017-10-11 09:05:07
【问题描述】:

我正在尝试从 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

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

【问题讨论】:

    标签: javascript arrays json recursion


    【解决方案1】:

    在您的原始代码中需要更正一些事情,当您递归调用 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)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-10
      相关资源
      最近更新 更多