如何在函数参数javascript中指定对象位置

如何在函数参数javascript中指定对象位置,javascript,Javascript,我希望能够使用一个函数来更新一个或多个对象,该函数指定要在对象中更新的对象的位置。我不确定它的正确语法是什么。我下面的尝试实际上在原始对象中创建了一个新参数,因为我想更新用户对象的现有字段 var User = { local: { location: { city: "", state: "" } } } var Profile = { location: { city: "", state: "" } }

我希望能够使用一个函数来更新一个或多个对象,该函数指定要在对象中更新的对象的位置。我不确定它的正确语法是什么。我下面的尝试实际上在原始对象中创建了一个新参数,因为我想更新用户对象的现有字段

var User = {
    local: {
    location: {
      city: "",
      state: ""
    }
  }
}

var Profile = {
    location: {
    city: "",
    state: ""
    }
}

function update(model, parameter, updatedLocation)  {
        return model[updatedLocation] = {
        city: updatedLocation.city,
      state: updatedLocation.state,
    };
}

update(User, ["local"]["location"], { city: "ny", state: "ny"});
update(Profile, ["location"], { city: "ny", state: "ny"});

console.log(User);
console.log(Profile);

与此处的另一个答案类似,但不需要对位置结构进行明确编码:

函数updatemodel,参数,newVal{ 模型[参数]=newVal; } updateUser[local],位置,{城市:纽约,州:纽约}; 更新配置文件,位置,{城市:纽约,州:纽约}; 或者,如果只更新位置,则可以简化功能:

函数updateLocationmodel,newVal{ model.location=newVal; }
你可以试试这个。基本上,这是一种通用的方法,可以进入对象的任何级别并更新属性。代码注释中的详细信息

变量用户={ 本地:{ 地点:{ 城市:, 声明: } } } 变量配置文件={ 地点:{ 城市:, 声明: } } 函数updateobj,path,updatedProps{ var objToUpdate=obj; //沿着路径迭代以找到所需的对象 对于变量i=0;i控制台。日志配置文件:,配置文件;当前代码添加新字段的原因是传递参数的方式。您需要的是字符串而不是数组,并且无法按现有方式组合两个索引。例如updateUser[local],location。。。和更新配置文件、位置等。。。。此外,您的函数应该读取模型[参数],而不是模型[更新位置]。