首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在JavaScript中为JSON / XML数据生成传销树

如何在JavaScript中为JSON / XML数据生成传销树
EN

Stack Overflow用户
提问于 2010-12-18 11:24:27
回答 1查看 26.6K关注 0票数 6

我有一些这样的数据:(在sql sERVER)

代码语言:javascript
运行
复制
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。

EN

回答 1

Stack Overflow用户

发布于 2010-12-18 14:22:52

我不确定这段代码是否能运行,我只是在这里输入,没有测试。我希望这就是你要找的。(顺便说一句,我有用于数组搜索的传统风格的for循环。我上次使用javascript已经很久了。所以我需要引用w3schools来获得数组函数。:-P)

代码语言:javascript
运行
复制
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);

附言:你将不得不照顾许多其他的情况以及。例如,如果数据不一致怎么办等。我在上面的代码中避免了大多数(更确切地说是全部)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4476442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档