JavaScript 对象的动态深度设置 [英] Dynamic deep setting for a JavaScript object

查看:25
本文介绍了JavaScript 对象的动态深度设置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

给定一个对象属性路径的字符串,我如何动态设置这个属性.

Given a string for a object property path, how do I set this property dynamically.

给定这个示例对象:

var obj = {
    a: {
        b: [ { c: 'Before' } ]
    }
};

它应该能够使用这样的辅助函数设置值:

It should be able to set the value with a helper function like this:

setToValue(obj, 'After', 'a.b.0.c');

我用下面的代码试过了.但如果变量不是引用,则 parent 是副本.

I tried it with the following code. But parent is a copy if the variable not a reference.

function setToValue(obj, value, path) {
    var arrPath = path.split('.'),
        parent = obj;

    for (var i = 0, max = arrPath.length; i < max; i++) {
        parent = parent[arrPath[i]];
    }

    parent = value;
}

推荐答案

a) 简单的 a.b[0].c = 'After' 有什么问题?

a) What's wrong with a simple a.b[0].c = 'After'?

至于方法:

function setToValue(obj, value, path) {
    var i;
    path = path.split('.');
    for (i = 0; i < path.length - 1; i++)
        obj = obj[path[i]];

    obj[path[i]] = value;
}

这里是 JSFiddle:http://jsfiddle.net/QycBz/24/

Here the JSFiddle: http://jsfiddle.net/QycBz/24/

这篇关于JavaScript 对象的动态深度设置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆