Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环对象和数组的对象_Javascript - Fatal编程技术网

Javascript 循环对象和数组的对象

Javascript 循环对象和数组的对象,javascript,Javascript,我有以下具有嵌套对象和数组的对象: { "children":[ { "id":"9737ea0a-fa6f-42e1-bf16-a10af80e4d50", "isCriteria":false, "name":"Domain 1", "children":[ { "id":"e06d1940-b480-48e2-8e1a-2fe2a3910dfd", "children":[

我有以下具有嵌套对象和数组的对象:

{
  "children":[
    {
      "id":"9737ea0a-fa6f-42e1-bf16-a10af80e4d50",
      "isCriteria":false,
      "name":"Domain 1",
      "children":[
        {
          "id":"e06d1940-b480-48e2-8e1a-2fe2a3910dfd",
          "children":[
            {
              "id":"30995e1e-7195-4d01-85bf-c621398796cc",
              "children":[
                {
                  "id":"2969e48d-615e-4774-b92e-cbce768503ff",
                  "children":[

                  ],
                  "isCriteria":true,
                  "name":"Criteria 1",
                  "questionType":"Yes/NO",
                  "importance":3
                }
              ],
              "isCriteria":false,
              "name":"sub domain 1 - 2"
            }
          ],
          "isCriteria":false,
          "name":"Sub domain 1"
        },
        {
          "id":"c5b36f02-e765-4d93-970c-6faca94c28c1",
          "children":[
            {
              "id":"6807ea4f-fb14-4d68-98f4-b3bf4c601e5c",
              "children":[

              ],
              "isCriteria":true,
              "name":"Criteria 2",
              "questionType":"5",
              "importance":"1"
            }
          ],
          "isCriteria":false,
          "name":"sub domain 2"
        }
      ]
    }
  ]
}

我想在孩子们中间绕一圈,直到我找到尾巴为止。然后用其他数据编辑尾部,例如。。在中无法工作,因为我有数组

您可以在数组或对象上使用Object.keys,然后遍历这些。。这只是一个快速而肮脏的例子

风险值数据={ 儿童:[{ id:9737ea0a-fa6f-42e1-bf16-a10af80e4d50, isCriteria:错误, 域名:域名1, 儿童:[{ id:e06d1940-b480-48e2-8e1a-2fe2a3910dfd, 儿童:[{ 识别号:30995e1e-7195-4d01-85bf-c621398796cc, 儿童:[{ 识别号:2969e48d-615e-4774-b92e-cbce768503ff, 儿童:[], isCriteria:没错, 名称:标准1, 问题类型:是/否, 重要性:3 }], isCriteria:错误, 名称:子域1-2 }], isCriteria:错误, 名称:子域1 }, { id:c5b36f02-e765-4d93-970c-6faca94c28c1, 儿童:[{ id:6807ea4f-fb14-4d68-98f4-b3bf4c601e5c, 儿童:[], isCriteria:没错, 名称:标准2, 问题类型:5, 重要性:1 }], isCriteria:错误, 名称:子域2 } ] }] }; 函数loopStuffobj,cb{ Object.keysobj.forEachkey,idx=>{ var val=对象[键]; ifobject==val loopStuffval的类型,cb; else-cbval; }; } loopStuffdata,itm=>{ console.logitm;
}; 您可以轻松地递归地执行此操作

函数递归节点,级别=0{ 如果node==null返回;//检查null,退出 console.lognode.id==null?'root':node.id;//打印id 如果node.children node.children.forEachchild=>recursechild,级别+1;//移交给子级 } 下面代码的输出示例

root
↓ ID: 9737ea0a-fa6f-42e1-bf16-a10af80e4d50
    ↳ Name: Domain 1
  ↓ ID: e06d1940-b480-48e2-8e1a-2fe2a3910dfd
      ↳ Name: Sub domain 1
    ↓ ID: 30995e1e-7195-4d01-85bf-c621398796cc
        ↳ Name: sub domain 1 - 2
      ↳ ID: 2969e48d-615e-4774-b92e-cbce768503ff
          ↳ Name: Criteria 1
          ↳ Type: Yes/NO
          ↳ Importance: 3
  ↓ ID: c5b36f02-e765-4d93-970c-6faca94c28c1
      ↳ Name: sub domain 2
    ↳ ID: 6807ea4f-fb14-4d68-98f4-b3bf4c601e5c
        ↳ Name: Criteria 2
        ↳ Type: 5
        ↳ Importance: 1
常量数据=加载数据; 递归数据; 函数递归节点,级别=0{ 如果node==null返回; 让符号=node.isCriteria?“↳' : '↓'; 让paddingOuter=.padStartlevel-1*2'; 让paddingner=.padStartlevel+1*2'; console.lognode.id==null?'root':paddingOuter+symbol+'id:'+node.id; 如果node.name console.logpaddingner+'↳ 名称:'+node.Name; if node.isCriteria{ console.logpaddingner+'↳ 类型:'+node.questionType; console.logpaddingner+'↳ 重要性:'+节点重要性; } 如果node.children node.children.forEachchild=>recursechild,级别+1; } 函数加载数据{ 返回{ 儿童:[{ id:9737ea0a-fa6f-42e1-bf16-a10af80e4d50, isCriteria:错误, 域名:域名1, 儿童:[{ id:e06d1940-b480-48e2-8e1a-2fe2a3910dfd, 儿童:[{ 识别号:30995e1e-7195-4d01-85bf-c621398796cc, 儿童:[{ 识别号:2969e48d-615e-4774-b92e-cbce768503ff, 儿童:[ ], isCriteria:没错, 名称:标准1, 问题类型:是/否, 重要性:3 }], isCriteria:错误, 名称:子域1-2 }], isCriteria:错误, 名称:子域1 }, { id:c5b36f02-e765-4d93-970c-6faca94c28c1, 儿童:[{ id:6807ea4f-fb14-4d68-98f4-b3bf4c601e5c, 儿童:[ ], isCriteria:没错, 名称:标准2, 问题类型:5, 重要性:1 }], isCriteria:错误, 名称:子域2 } ] }] }; }
.as控制台包装{top:0;最大高度:100%!重要;}请参阅:为什么不?当与数组一起使用时,它将为您提供索引。如果要停止递归,您可以检查node.isCriteria是否为true。