我有一些这样的数据:(在sql sERVER)
MemberID,ParemtID,Amt,OtherInfo
1, NULL, 200,dfdsf
2, 1, 300,DFDF
3, 1, 400,DFS
4, 3, 75,NULL
现在我想像这样构建Tree:
仅使用JS。上述数据可以在JSON / XML / CSV /格式化文本中传递,如何仅在JS中生成这样的动态树?请不要建议PHP / .NET解决方案。我更喜欢JQuery。
发布于 2010-12-18 14:22:52
我不确定这段代码是否能运行,我只是在这里输入,没有测试。我希望这就是你要找的。(顺便说一句,我有用于数组搜索的传统风格的for循环。我上次使用javascript已经很久了。所以我需要引用w3schools来获得数组函数。:-P)
var str = [
{memberID : 1, parentId:null, amount:200, otherInfo:"blah"},
{memberID : 2, parentId:1, amount:300, otherInfo:"blah1"},
{memberID : 3, parentId:1, amount:400, otherInfo:"blah2"},
{memberID : 4, parentId:3, amount:500, otherInfo:"blah3"}
];
(function fromArray(arr){
var getElemByParent = function(parent){
var elems = [];
for (var i=0; i<arr.length; i++){
if (arr[i].parentId == parent)
elems.push(arr[i]);
}
return elems;
}
var finalObj;
var enumFunction = function(node){
node.siblings = getElemByParent(node.memberID);
for (var i=0;i<node.siblings.length; i++)
enumFunction(node.siblings[i]);
}
finalObj = getElemByParent(null);
enumFunction(finalObj);
console.log(finalObj);
return finalObj;
})(str);
附言:你将不得不照顾许多其他的情况以及。例如,如果数据不一致怎么办等。我在上面的代码中避免了大多数(更确切地说是全部)。
https://stackoverflow.com/questions/4476442
复制相似问题