gpt4 book ai didi

javascript - 如何将值设置为由键数组标识的 Javascript 对象中的属性

转载 作者:行者123 更新时间:2023-11-29 17:48:09 26 4
gpt4 key购买 nike

如果有一个多层次的 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":{"obj111":"John","b":13,"obj1111":{"a":15,"b":35},"obj21":{"a":15,"b":16}}}

function myFunc (myObj, myArr, newValue) {
myArr.reduce(function(r, e, i, arr) {
if(!arr[i+1] && typeof r[e] == 'object') Object.assign(r[e], newValue);
return r[e] || {}
}, myObj)
}

myFunc(myObject, ['obj11', 'obj1111'], {z:12});
console.log(myObject)

更新如果您只想更改嵌套属性的值,那么您可以使用类似的东西。

var myObject = {"a":12,"obj11":{"obj111":"John","b":13,"obj1111":{"a":15,"b":35},"obj21":{"a":15,"b":16}}}

function myFunc (myObj, myArr, newValue) {
myArr.reduce(function(r, e, i, arr) {
if(!arr[i+1] && r[e]) r[e] = newValue
return r[e] || {}
}, myObj)
}

myFunc(myObject, ['obj11', 'obj1111'], {z:12});
console.log(myObject)

关于javascript - 如何将值设置为由键数组标识的 Javascript 对象中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46994662/

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