gpt4 book ai didi

javascript - 递归更新 Javascript 对象

转载 作者:搜寻专家 更新时间:2023-11-01 04:09:51 25 4
gpt4 key购买 nike

我有一个嵌套对象,我想用对象提供的值更新它,该对象包含类似的结构,但只包含我想更新的属性。创建新结果而不是修改初始对象也很棒。

    var initial = 
{
a: 1,
b : {
c : 2,
d : 3
},
f: 5
};

var update = {
a: 2,
b: {
d: 2
}
};
function updateFunction (a,b) { return a+b;};
var result=
{
a: 3, // updateFunction (1,2)=> 3
b : {
c : 2,
d :5 // updateFunction (3,2) => 5
},
f: 5
};

最佳答案

还没有完全测试,但也许,

假设对象很简单,

function updateFunction (a,b) {  return a + b;};    

function recurse(initial, update){
for(prop in initial){
if({}.hasOwnProperty.call(initial, prop) && {}.hasOwnProperty.call(update, prop)){
if(typeof initial[prop] === 'object' && typeof update[prop] === 'object'){
recurse(initial[prop], update[prop]);
}
else{
initial[prop] = updateFunction(initial[prop], update[prop]);
}
}
}
}
recurse(initial, update);

编辑

如果不改变初始结果是预期的

function updateFunction (a,b) {  return a + b;};

function recurse(initial, update){
var result = {};
for(prop in initial){
if({}.hasOwnProperty.call(initial, prop)){
result[prop] = initial[prop];
if({}.hasOwnProperty.call(update, prop)){
if(typeof initial[prop] === 'object' && typeof update[prop] === 'object'){
result[prop] = recurse(initial[prop], update[prop]);
}
else{
result[prop] = updateFunction(initial[prop], update[prop]);
}
}
}
}
return result;
}
var result = recurse(initial, update);

希望这对您有所帮助。

关于javascript - 递归更新 Javascript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16384295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com