Javascript-从平面数组动态生成无限嵌套数组

Javascript-从平面数组动态生成无限嵌套数组,javascript,arrays,treeview,Javascript,Arrays,Treeview,我有一个通过AJAX请求从服务器端获得的员工列表,该列表中的每个项目都是它下面项目的父项,除了最后一个子项,因此在客户端,我最终得到了如下JavaScript数组: data = [ { FirstName: "John", LastName: "Doe", Position: "Manager", ID: "5656" }, { FirstName: "Sam", LastName: "Doe", Position: "Sale", ID: "654654" }, { FirstName: "

我有一个通过AJAX请求从服务器端获得的员工列表,该列表中的每个项目都是它下面项目的父项,除了最后一个子项,因此在客户端,我最终得到了如下JavaScript数组:

data = [
{ FirstName: "John", LastName: "Doe", Position: "Manager", ID: "5656" },
{ FirstName: "Sam", LastName: "Doe", Position: "Sale", ID: "654654" },
{ FirstName: "Sarah", LastName: "Doe", Position: "Employee", ID: "6541" },
{ FirstName: "Sally", LastName: "Doe", Position: "Clerk", ID: "8754" },
{ FirstName: "Joe", LastName: "Doe", Position: "Clerk", ID: "654564" }
];
var tree = [
  {
      text: "John - Manager",
      nodes: [
        {
            text: "Sam - Sale",
            nodes: [
              {
                  text: "Sarah - Employee",
                  nodes: [
                      {
                          text: "Sally - Clerk",
                          nodes: [
                              {
                                  text: "Joe - Clerk"
                              }
                          ]
                      }
                  ]
              }
            ]
        }
      ]
  }
];
到目前为止还不错,现在我的问题是我想使用,这个组件需要一个JavaScript数组,如下所示:

data = [
{ FirstName: "John", LastName: "Doe", Position: "Manager", ID: "5656" },
{ FirstName: "Sam", LastName: "Doe", Position: "Sale", ID: "654654" },
{ FirstName: "Sarah", LastName: "Doe", Position: "Employee", ID: "6541" },
{ FirstName: "Sally", LastName: "Doe", Position: "Clerk", ID: "8754" },
{ FirstName: "Joe", LastName: "Doe", Position: "Clerk", ID: "654564" }
];
var tree = [
  {
      text: "John - Manager",
      nodes: [
        {
            text: "Sam - Sale",
            nodes: [
              {
                  text: "Sarah - Employee",
                  nodes: [
                      {
                          text: "Sally - Clerk",
                          nodes: [
                              {
                                  text: "Joe - Clerk"
                              }
                          ]
                      }
                  ]
              }
            ]
        }
      ]
  }
];
我的树不是静态的,所以我必须动态生成它,如何使用JavaScript动态生成这样一个无限嵌套的数组?

这个建议的特点

reduceRight()
方法对累加器应用函数,数组的每个值(从右到左)都必须将其减少为单个值

var数据=[
{名字:“约翰”,姓氏:“能源部”,职位:“经理”,身份证:“5656”},
{姓:“萨姆”,姓:“能源部”,职务:“销售”,身份证:“654654”},
{名字:“莎拉”,姓氏:“能源部”,职位:“雇员”,身份证:“6541”},
{姓:“萨利”,姓:“能源部”,职务:“办事员”,身份证:“8754”},
{姓:“乔”,姓:“能源部”,职务:“办事员”,身份证:“654564”}
],
tree=data.reduceRight(函数(r,a){
var o={text:a.FirstName+'-'+a.Position};
if(r){
o、 节点=r;
}
返回[o];
},未定义);

document.write(“”+JSON.stringify(tree,0,4)+“”)你可以用谷歌搜索链表js并四处看看。非常感谢你,尼娜,你的解决方案帮了大忙。如果你认为我的问题并没有描述它的问题,那么请考虑编辑它以符合你的答案。