【发布时间】:2019-03-24 15:19:30
【问题描述】:
我有一个看起来像这样的 JavaScript 对象:
obj = {
person: {
male: true,
age: 10
},
state: {
quit: false,
rain: -3
},
game: {
settings: {
lang: 'en',
os: 'win',
ver: 10,
},
},
next: 55,
last: 10,
};
我想创建一个函数,可以用来设置任何 obj 的值,如下所示:
function updateObj( property /*: string[]*/, value /*: any*/ ) {
obj[property[0]][property[1]] = value; <-- How to generalize?
}
那么我可以做这样的事情:
updateObj( ['person', 'male'], false );
updateObj( ['state', 'rain'], 19 );
但是,如果属性参数长度不等于2,当前的实现将无法正常工作。这行代码如何:
obj[property[0]][property[1]] = value;
可以推广到任何数组大小的属性?
【问题讨论】:
-
如果长度不大于或等于2则返回可能¯_(ツ)_/¯
-
你还能做什么?如果属性参数的长度不大于等于2,你希望做什么?
-
我不确定我是否明白。如果您知道属性名称和值是什么,您可以使用点符号来设置值:
obj.state.quit = false。直接访问对象不能执行的函数是什么? -
为什么不只是
obj['person']['male'] = false? -
我希望
updateObj(['game','settings','ver'], 11 )和updateObj(['next'], 100 )也能正常工作
标签: javascript properties attributes