【问题标题】:Iterating through JSON using angular.forEach使用 angular.forEach 遍历 JSON
【发布时间】:2015-10-14 14:23:39
【问题描述】:

我有一个 JSON 字符串,其中包含我所有的父节点和子节点。我需要将父节点及其对应的子节点呈现为导航栏中的列表。

这是我的 json:

    [
      {node_ID='2', name='Child3', parent='3', role ='leafNode'},
      {node_ID='4', name='Child4', parent='3', role ='leafNode'},
      {node_ID='3', name='Child2', parent='1', role ='Node'},
      {node_ID='1', name='Node1', parent='0', role ='rootNode'},

...]

迭代后我的列表应该显示为:

          > Node1
            >Child2
              >Child3
              >Child4

有人可以提供解决方案,使用 angular.forEach 函数遍历 JSIN 数组并根据节点 ID 和 Parent-ID 对节点进行排序吗?

【问题讨论】:

  • 你控制后端发送的数据吗?发送平面数组并不像在每个级别发送具有相同属性键的嵌套数组那样干净。还请展示解决此问题的尝试
  • 是的,试图控制来自后端的数据。尝试使用 for.Each 函数,但它没有按照父子关系呈现。
  • @Sree 您也可以在 JavaScript 中与数组建立父子关系。如果没有从后端获得解决方案。它应该像 { node_ID = '1', name = 'Node1', role = 'rootNode', child = [{ node_ID = '3', name = 'Child2', role = 'Node', child = [{ node_ID = '2',名称 = 'Child3',角色 = 'leafNode',孩子 = [] },{ node_ID = '4',名称 = 'Child4',角色 = 'leafNode',孩子 = [] }] }] },
  • 向我们展示您的尝试,即使它不起作用。这就是这个网站的全部想法......你展示了给出问题的代码,人们试图帮助你修复它。在没有看到一些努力的情况下,您似乎在要求其他人为您完成所有工作。它可能是您需要的一些简单的东西......在这种情况下,这意味着我们不必从头开始构建它
  • 也建议你googleangular recursive directive

标签: javascript json angularjs


【解决方案1】:

这会将您的数据映射到适合传递给递归树指令的嵌套数组。在网络搜索中找到其中一个应该不难...有很多很多示例和模块

var tmp ={}, res=[];

data.forEach(function(item){
   item.children =[];
   tmp[item.node_ID]=item;
});

data.forEach(function(item){
  if(+item.parent !==0){
    tmp[item.parent].children.push(item);
  }else{
    res.push(item);
  }
});

delete tmp;


$scope.tree = res;

DEMO

【讨论】:

    猜你喜欢
    • 2016-02-10
    • 2017-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 2015-12-21
    相关资源
    最近更新 更多