我正在尝试从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
}
如果没有内部物体,一切都正常。我已经做了一个递归方法,但它没有按预期工作。请看看它
答案 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)