我想动态填充一棵树。所以我这样做:
if (TreeTableDataLine.PELEMENT == currPelement) {
element = {
element : TreeTableDataLine.ELEMENT,
TEXT : TreeTableDataLine.TEXT,
};
pelement[TreeTableDataLine.PELEMENT][TreeTableDataLine.ELEMENT] = element;
有没有办法填补路径
pelement[TreeTableDataLine.PELEMENT][TreeTableDataLine.ELEMENT]
动态?
我试过这个:
for (var p = 0; p < pathAr.length; p++) {
if (p == 0) {
path = pathAr[p] ;
} else {
path = path + "." + pathAr[p];
}
}
pelement[path] = element;
但这不起作用。
答案 0 :(得分:0)
如果不使用eval()
,我认为没有办法使用y.z
之类的字符串来评估x.y.z
。你需要循环,更新你当前的参考点。
例如(我的第二次尝试):
if (pathAr.length === 1) {
pelement[pathAr[0]] = element;
return;
}
var p = pelement[pathAr[0]];
for (var i = 1; i < pathAr.length - 1; i++) {
p = p[pelement[pathAr[i]];
}
p[pathAr[pathAr.length-1]] = element;
或者,在一行中:
pathAr.slice(0,pathAr.length-1).reduce(function(acc,x) {
return acc[x]; },
thing)[pathAr[pathAr.length - 1]] = element