动态填充树

时间:2015-08-29 15:22:18

标签: javascript arrays tree

我想动态填充一棵树。所以我这样做:

         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; 

但这不起作用。

1 个答案:

答案 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
相关问题