如何遍历JavaScript对象的深层嵌套属性? [英] How do I loop through deeply nested properties of a JavaScript object?

查看:112
本文介绍了如何遍历JavaScript对象的深层嵌套属性?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个具有3级嵌套的JavaScript对象。我很难从第3级嵌套中获取值。

I have a JavaScript object with 3 levels of nesting. I am having a hard time getting the values from the 3rd level of nesting.

我已经对SO进行了一些研究并获得了基本的循环但我似乎无法超过第一级。

I have done some research on SO and get the basic looping but I can't seem to get past the first level.

这是我的代码

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?

How do I loop through and retrieve xpos and ypos from within node?

推荐答案

您有一个对象( customers ),其数组存储在集群中,您可以使用

You have an object (customers) with an array stored at cluster, which you can iterate through with

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

cluster 有一个数组存储在,您可以通过以下方式迭代:

cluster has an array stored at segment which you can iterate through with:

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

segment 有一个存储在节点的数组,您可以使用以下代码进行迭代:

segment has an array stored at node which you can iterate through with:

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

您可以将所有这些组合在一起来迭代每个段的每个节点通过组合这些循环来集中客户:

You can combine all of these to iterate through every node of every segment of every cluster on customers just by combining these loops:

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
    }
  }
}

这篇关于如何遍历JavaScript对象的深层嵌套属性?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆