如何循环浏览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从节点内?
答
你有一个对象(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
}
}
}
'customers.cluster [0] .SEGMENT [0]。节点[0] .xpos','0'值可以与其他数字交换。 – zzzzBov 2011-03-04 03:42:35
[使用JavaScript遍历JSON对象树的所有节点]的可能重复(http://*.com/questions/722668/traverse-all-the-nodes-of-a-json-object-tree-with- javascript) – cimmanon 2015-08-18 13:05:30