Javascript 动态改变对象值

mal*_*200 2 javascript object

我有一个这样的对象

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)

Jam*_*gne 5

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)

http://jsfiddle.net/rPPK5/1/