如何循环浏览JavaScript对象的深层嵌套属性?

问题描述:

我有一个3级嵌套的JavaScript对象。我很难从第三层嵌套中获取值。如何循环浏览JavaScript对象的深层嵌套属性?

我已经做了一些关于SO的研究并获得了基本的循环,但是我似乎无法通过第一级。

这里是我的代码

var customers = { 
    "cluster": [{ 
     "id": "cluster1.1", 
     "color": "blue", 
     "flights": "784", 
     "profit": "524125", 
     "clv": "2364", 
     "segment": [{ 
     "id": "segment1.1", 
     "color": "green", 
     "flights": "82", 
     "profit": "22150", 
     "clv": "1564", 
     "node": [{ 
      "id": "node1.1", 
      "color": "orange", 
      "xpos": "1", 
      "ypos": "1" 
     }, { 
      "id": "node1.2", 
      "color": "orange", 
      "xpos": "1", 
      "ypos": "2" 
     }, { 
      "id": "node1.3", 
      "color": "orange", 
      "xpos": "1", 
      "ypos": "3" 
     }, { 
      "id": "node1.4", 
      "color": "orange", 
      "xpos": "1", 
      "ypos": "4" 
     }] 
     }, { 
     "id": "segment1.2", 
     "color": "red", 
     "flights": "2", 
     "profit": "2150", 
     "clv": "1564", 
     "node": [{ 
      "id": "node2.1", 
      "color": "tan", 
      "xpos": "2", 
      "ypos": "1" 
     }, { 
      "id": "node2.2", 
      "color": "tan", 
      "xpos": "2", 
      "ypos": "2" 
     }, { 
      "id": "node2.3", 
      "color": "tan", 
      "xpos": "2", 
      "ypos": "3" 
     }, { 
      "id": "node2.4", 
      "color": "tan", 
      "xpos": "2", 
      "ypos": "4" 
     }] 
     }] 
    }, { 
     "id": "cluster1.2", 
     "flights": "4", 
     "profit": "5245", 
     "clv": "2364", 
     "segment": [{ 
     "id": "segment1.2", 
     "flights": "2", 
     "profit": "2150", 
     "clv": "1564", 
     "node": [{ 
      "id": "node3.1", 
      "xpos": "3", 
      "ypos": "1" 
     }, { 
      "id": "node3.2", 
      "xpos": "3", 
      "ypos": "2" 
     }, { 
      "id": "node3.3", 
      "xpos": "3", 
      "ypos": "3" 
     }, { 
      "id": "node3.4", 
      "xpos": "3", 
      "ypos": "4" 
     }] 
     }] 
    }, { 
     "id": "cluster1.3", 
     "flights": "10", 
     "profit": "456978", 
     "clv": "548", 
     "segment": [{ 
     "id": "segment1.3", 
     "flights": "2", 
     "profit": "2150", 
     "clv": "1564", 
     "node": [{ 
      "id": "node4.1", 
      "xpos": "4", 
      "ypos": "1" 
     }, { 
      "id": "node4.2", 
      "xpos": "4", 
      "ypos": "2" 
     }, { 
      "id": "node4.3", 
      "xpos": "4", 
      "ypos": "3" 
     }, { 
      "id": "node4.4", 
      "xpos": "4", 
      "ypos": "4" 
     }] 
     }] 
    }] 
}; 

我如何遍历和检索XPOS和ypos从节点内?

+0

'customers.cluster [0] .SEGMENT [0]。节点[0] .xpos','0'值可以与其他数字交换。 – zzzzBov 2011-03-04 03:42:35

+0

[使用JavaScript遍历JSON对象树的所有节点]的可能重复(http://*.com/questions/722668/traverse-all-the-nodes-of-a-json-object-tree-with- javascript) – cimmanon 2015-08-18 13:05:30

你有一个对象(customers)与存储在cluster阵列,它可以通过与

var i, cluster; 
for (i = 0; i < customers.cluster.length; i++) 
{ 
    cluster = customers.cluster[i]; 
} 

cluster迭代具有存储在segment阵列,你可以通过与迭代:

var j, segment; 
for (j = 0; j < cluster.segment.length; j++) 
{ 
    segment = cluster.segment[j]; 
} 

segment有一个存储在node的数组,您可以使用它迭代:

var k, node; 
for (k = 0; k < segment.node.length; k++) 
{ 
    node = segment.node[k]; 
} 

您可将所有的这些只是通过组合这些循环通过客户每一个集群的每个环节的每一个节点进行迭代:

var i, cluster, j, segment, k, node; 
for (i = 0; i < customers.cluster.length; i++) 
{ 
    cluster = customers.cluster[i]; 

    for (j = 0; j < cluster.segment.length; j++) 
    { 
    segment = cluster.segment[j]; 

    for (k = 0; k < segment.node.length; k++) 
    { 
     node = segment.node[k]; 
     //access node.xpos, node.ypos here 
    } 
    } 
} 
+4

@zzzBov:洛尔兹感谢你为我拼写出来:)相信它不是这不是作业,我只是慢慢地捡起这样的东西。我需要一开始就握住手,我很欣赏人们(比如你)花时间去详细讨论。干杯。 – timmackay 2011-03-04 04:00:45

+8

良好的发展,但作业评论是光顾。对我来说,带走这里并不是在答案中给出的努力,而是在最后的解雇。 – orionrush 2013-09-30 14:14:08