如何为Javascript对象中的属性设置值,该对象由一组键标识

如何为Javascript对象中的属性设置值,该对象由一组键标识,javascript,Javascript,如果存在具有多个级别的Javascript对象,如中所示: myObject = { a: 12, obj11: { obj111: 'John', b:13, obj1111: { a:15, b: 35 } obj21: { a:15,

如果存在具有多个级别的Javascript对象,如中所示:

   myObject = {
         a: 12,
        obj11: {
                obj111: 'John',
                b:13,
                obj1111: { a:15,
                           b: 35 }
        obj21: { 
                a:15,
                b:16 }
         }
我想写一个函数,将对象、键数组和要分配给匹配属性的值传递给该函数

 function myFunc (myObj,myArr, newValue) {
   ...
  }
  myFunc(myObject, ['obj11', 'obj1111'], {z:12});
  console.log(myObject.obj11.obj1111);
应该显示{z:12}。 假设数组中的键始终正确。

可以使用
reduce()
方法查找嵌套对象,如果找到了它,则可以使用
object.assign()
添加新属性

var myObject={“a”:12,“obj11”:{“obj11”:“John”,“b”:13,“obj111”:{“a”:15,“b”:35},“obj21”:{“a”:15,“b”:16}}
函数myFunc(myObj、myArr、newValue){
myArr.reduce(函数(r,e,i,arr){
如果(!arr[i+1]&&typeof r[e]=“object”)object.assign(r[e],newValue);
返回r[e]|{}
},myObj)
}
myFunc(myObject,['obj11','obj1111',{z:12});
console.log(myObject)
函数myFunc(myObj,myArr,newValue){
var-temp=myObj;

对于(var I=0;IYou可以循环
myArr
。我知道了它的诀窍。但是如果我传递一个标量新值,它将不起作用,就像在myFunc中一样(myObject,['obj11','obj111'],25);它应该将25分配给obj11。obj111请在这个答案中添加文本来解释一下
function myFunc(myObj,myArr,newValue){
  var temp=myObj;
  for(var I=0;I<myArr.length;I++){
    temp=temp[myArr[I]];
  }
  temp=newValue;
};