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