JavaScript对象的动态深度设置 [英] Dynamic deep setting for a JavaScript object
本文介绍了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');
我尝试使用以下代码。但如果变量不是引用,则父项是副本。
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)有什么问题简单的ab [0] .c ='之后'?
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屋!
查看全文