我有一个这样的对象
var userobj = {
user1: {
firstName: 'abc',
lastName: 'abc',
age: 29,
address: {
company: {
location: 'xyz',
city: 'xyz',
street: 'xyz',
city: 'xyz'
},
location: 'xyz',
city: 'xyz',
street: 'xyz',
city: 'xyz'
},
payment: {
visa: false,
master: false,
paypal: true
},
},
user2: {
firstName: 'abc',
lastName: 'abc',
age: 29,
address: {
company: {
location: 'xyz',
city: 'xyz',
street: 'xyz',
city: 'xyz'
},
location: 'xyz',
city: 'xyz',
street: 'xyz',
city: 'xyz'
},
payment: {
visa: false,
master: false,
paypal: true
}
}
};
Run Code Online (Sandbox Code Playgroud)
我想编写一个函数来动态更改数据,就像 Funtkion 一样
function updateUserData(userName, key, value) {
userobj[userName][key] = value;
}
Run Code Online (Sandbox Code Playgroud)
如果仅更改第一级密钥,则此方法有效
updateUserData('user1', 'firstName', 'David');
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我如何更改功能,以便我也可以将密钥更改为其他级别吗?也许用数组作为参数?像这样
updateUserData('user1', ['address', 'company', 'location'], 'David');
Run Code Online (Sandbox Code Playgroud)
function updateUserData(userName, keys, value) {
var obj = userobj[userName];
for(var i=0; i<keys.length-1; i++){
obj = obj[keys[i]];
}
obj[keys[i]] = value;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7310 次 |
| 最近记录: |