Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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 为什么我的递归函数不能正确循环使用JSON?_Javascript_Json - Fatal编程技术网

Javascript 为什么我的递归函数不能正确循环使用JSON?

Javascript 为什么我的递归函数不能正确循环使用JSON?,javascript,json,Javascript,Json,最近编辑为较短 在这里问这个问题可能不太可能,但我需要一个我创建的递归函数的帮助。它没有从JSON中获取我想要的值。基本上,我希望得到所有“流”对象ID,它们的“类型”为“标准”或“块”。这些对象可以嵌套在父“Flow”对象下的多个“Flow”对象中,这就是为什么我需要一个递归方法来搜索所有这些对象。我创建了一个代码笔,因此您可以在这里看到我得到的结果: 该函数位于底部,名为“GroupRecursion”,我将JSON“Payload”作为参数传递给它 在我的数组ArrayOfBlockId

最近编辑为较短

在这里问这个问题可能不太可能,但我需要一个我创建的递归函数的帮助。它没有从JSON中获取我想要的值。基本上,我希望得到所有“流”对象ID,它们的“类型”为“标准”或“块”。这些对象可以嵌套在父“Flow”对象下的多个“Flow”对象中,这就是为什么我需要一个递归方法来搜索所有这些对象。我创建了一个代码笔,因此您可以在这里看到我得到的结果:

该函数位于底部,名为“GroupRecursion”,我将JSON“Payload”作为参数传递给它

在我的数组ArrayOfBlockId中,我只得到了大约3个ID(字符串),我应该正好得到4个字符串,因为有多少对象具有“Type”=“Standard”或“Block”。谢谢你的时间,如果这不是这个地方,让我知道

var Payload = {
    "Type": "Root",
    "FlowID": "FL_1",
    "Flow": [
      {
        "Type": "Group",
        "FlowID": "FL_27",
        "Description": "Pass 1",
        "Flow": [
          {
            "Type": "EmbeddedData",
            "FlowID": "FL_7",
            "EmbeddedData": [
              {
                "Description": "JSON",
                "Type": "Recipient",
                "Field": "JSON",
                "VariableType": "String",
                "DataVisibility": [],
                "AnalyzeText": false
              },
              {
                "Description": "DisplayLogicFrom",
                "Type": "Recipient",
                "Field": "DisplayLogicFrom",
                "VariableType": "String",
                "DataVisibility": [],
                "AnalyzeText": false
              },
              {
                "Description": "DisplayLogicAt",
                "Type": "Recipient",
                "Field": "DisplayLogicAt",
                "VariableType": "String",
                "DataVisibility": [],
                "AnalyzeText": false
              }
            ]
          },
          {
            "Type": "Branch",
            "FlowID": "FL_54",
            "Description": "New Branch",
            "BranchLogic": {
              "0": {
                "0": {
                  "LogicType": "EmbeddedField",
                  "LeftOperand": "APITest",
                  "Operator": "EqualTo",
                  "RightOperand": "True",
                  "_HiddenExpression": false,
                  "Type": "Expression",
                  "Description": "<span class=\"ConjDesc\">If</span>  <span class=\"LeftOpDesc\">APITest</span> <span class=\"OpDesc\">Is Equal to</span> <span class=\"RightOpDesc\"> True </span>"
                },
                "Type": "If"
              },
              "Type": "BooleanExpression"
            },
            "Flow": [
              {
                "Type": "Standard",
                "ID": "BL_4NL909leoyn5KBf",
                "FlowID": "FL_51"
              },
              {
                "Type": "Standard",
                "ID": "BL_bBGbASH2RnPCskt",
                "FlowID": "FL_59"
              },
              {
                "Type": "WebService",
                "FlowID": "FL_50",
                "URL": "https://co1.qualtrics.com/API/v3/surveys",
                "Method": "POST",
                "RequestParams": [],
                "EditBodyParams": [
                  {
                    "key": "file",
                    "value": "${e://Field/TEST}"
                  },
                  {
                    "key": "name",
                    "value": "new survey"
                  }
                ],
                "Body": [
                  {
                    "key": "file",
                    "value": "${e://Field/TEST}"
                  },
                  {
                    "key": "name",
                    "value": "new survey"
                  }
                ],
                "ContentType": "application/x-www-form-urlencoded",
                "Headers": [
                  {
                    "key": "x-api-token",
                    "value": "h69TKYgxu46SMEXzcKkeRUXovq2jALTpHDhPUGLq"
                  }
                ],
                "ResponseMap": [
                  {
                    "key": "meta.requestId",
                    "value": "meta.requestId"
                  },
                  {
                    "key": "meta.error.errorCode",
                    "value": "meta.error.errorCode"
                  },
                  {
                    "key": "meta.error.errorMessage",
                    "value": "meta.error.errorMessage"
                  },
                  {
                    "key": "meta.httpStatus",
                    "value": "meta.httpStatus"
                  }
                ],
                "FireAndForget": false,
                "SchemaVersion": 0,
                "StringifyValues": true
              },
              {
                "Type": "Standard",
                "ID": "BL_4Yhl7MpygFG9Z6B",
                "FlowID": "FL_53"
              }
            ]
          },
          {
            "Type": "Standard",
            "ID": "BL_0GHahOV7Hb9l141",
            "FlowID": "FL_3"
          },
          {
            "Type": "Branch",
            "FlowID": "FL_5",
            "Description": "New Branch",
            "BranchLogic": {
              "0": {
                "0": {
                  "LogicType": "Question",
                  "QuestionID": "QID4",
                  "QuestionIsInLoop": "no",
                  "ChoiceLocator": "q://QID4/SelectableChoice/1",
                  "Operator": "Selected",
                  "QuestionIDFromLocator": "QID4",
                  "LeftOperand": "q://QID4/SelectableChoice/1",
                  "Type": "Expression",
                  "Description": "<span class=\"ConjDesc\">If</span> <span class=\"QuestionDesc\">What would you like to do?</span> <span class=\"LeftOpDesc\">Check if there is custom validation/Force Response on my survey and on what questions</span> <span class=\"OpDesc\">Is Selected</span> "
                },
                "Type": "If"
              },
              "Type": "BooleanExpression"
            },
            "Flow": [
              {
                "Type": "Block",
                "ID": "BL_3n1Vmp4FL6cZZuR",
                "FlowID": "FL_2"
              },
              {
                "Type": "EndSurvey",
                "FlowID": "FL_11"
              }
            ]
          },
          {
            "Type": "Branch",
            "FlowID": "FL_56",
            "Description": "New Branch",
            "BranchLogic": {
              "0": {
                "0": {
                  "LogicType": "Question",
                  "QuestionID": "QID4",
                  "QuestionIsInLoop": "no",
                  "ChoiceLocator": "q://QID4/SelectableChoice/6",
                  "Operator": "Selected",
                  "QuestionIDFromLocator": "QID4",
                  "LeftOperand": "q://QID4/SelectableChoice/6",
                  "Type": "Expression",
                  "Description": "<span class=\"ConjDesc\">If</span> <span class=\"QuestionDesc\">What would you like to do?</span> <span class=\"LeftOpDesc\">Re-Number the questions to be in order but add \"TEXT\" to descriptive text questions.</span> <span class=\"OpDesc\">Is Selected</span> "
                },
                "Type": "If"
              },
              "Type": "BooleanExpression"
            },
            "Flow": [
              {
                "Type": "Standard",
                "ID": "BL_9ESRPcpuMl5TNcx",
                "FlowID": "FL_60"
              },
              {
                "ID": "BL_cACgbdijKOAtRo9",
                "Type": "Standard",
                "FlowID": "FL_61"
              },
              {
                "Type": "Standard",
                "ID": "BL_0SuWoa7K2CkYFsV",
                "FlowID": "FL_55"
              }
            ]
          },
          {
            "Type": "Branch",
            "FlowID": "FL_58",
            "Description": "New Branch",
            "BranchLogic": {
              "0": {
                "0": {
                  "LogicType": "Question",
                  "QuestionID": "QID4",
                  "QuestionIsInLoop": "no",
                  "ChoiceLocator": "q://QID4/SelectableChoice/6",
                  "Operator": "NotSelected",
                  "QuestionIDFromLocator": "QID4",
                  "LeftOperand": "q://QID4/SelectableChoice/6",
                  "Type": "Expression",
                  "Description": "<span class=\"ConjDesc\">If</span> <span class=\"QuestionDesc\">What would you like to do?</span> <span class=\"LeftOpDesc\">Re-Number the questions to be in order but add \"TEXT\" to descriptive text questions.</span> <span class=\"OpDesc\">Is Not Selected</span> "
                },
                "Type": "If"
              },
              "Type": "BooleanExpression"
            },
            "Flow": [
              {
                "Type": "Standard",
                "ID": "BL_2tA1Ilad6iCEEu1",
                "FlowID": "FL_13"
              },
              {
                "Type": "EmbeddedData",
                "FlowID": "FL_14",
                "EmbeddedData": [
                  {
                    "Description": "APIToken",
                    "Type": "Custom",
                    "Field": "APIToken",
                    "VariableType": "String",
                    "DataVisibility": [],
                    "AnalyzeText": false,
                    "Value": "${q://QID18/ChoiceTextEntryValue/2}"
                  },
                  {
                    "Description": "Datacenter",
                    "Type": "Custom",
                    "Field": "Datacenter",
                    "VariableType": "String",
                    "DataVisibility": [],
                    "AnalyzeText": false,
                    "Value": "${q://QID18/ChoiceTextEntryValue/1}"
                  }
                ]
              },
              {
                "Type": "Standard",
                "ID": "BL_0r1ZjeAhMBEBhdz",
                "FlowID": "FL_4"
              },
              {
                "Type": "Branch",
                "FlowID": "FL_21",
                "Description": "New Branch",
                "BranchLogic": {
                  "0": {
                    "0": {
                      "LogicType": "Question",
                      "QuestionID": "QID17",
                      "QuestionIsInLoop": "no",
                      "ChoiceLocator": "q://QID17/SelectableChoice/4",
                      "Operator": "Selected",
                      "QuestionIDFromLocator": "QID17",
                      "LeftOperand": "q://QID17/SelectableChoice/4",
                      "Type": "Expression",
                      "Description": "<span class=\"ConjDesc\">If</span> <span class=\"QuestionDesc\">What type of questions will you be using?</span> <span class=\"LeftOpDesc\">matrix choice to multiple choice question</span> <span class=\"OpDesc\">Is Selected</span> "
                    },
                    "Type": "If"
                  },
                  "Type": "BooleanExpression"
                },
                "Flow": [
                  {
                    "Type": "Standard",
                    "ID": "BL_6ilSpb6iiCzWvtz",
                    "FlowID": "FL_20"
                  },
                  {
                    "Type": "Standard",
                    "ID": "BL_a4faBNVnTi19wLr",
                    "FlowID": "FL_23"
                  },
                  {
                    "Type": "EmbeddedData",
                    "FlowID": "FL_25",
                    "EmbeddedData": [
                      {
                        "Description": "Conjunction",
                        "Type": "Custom",
                        "Field": "Conjunction",
                        "VariableType": "String",
                        "DataVisibility": [],
                        "AnalyzeText": false,
                        "Value": "${q://QID32/ChoiceGroup/SelectedChoices}"
                      }
                    ]
                  },
                  {
                    "Type": "EmbeddedData",
                    "FlowID": "FL_26",
                    "EmbeddedData": [
                      {
                        "Description": "Operator",
                        "Type": "Custom",
                        "Field": "Operator",
                        "VariableType": "String",
                        "DataVisibility": [],
                        "AnalyzeText": false,
                        "Value": "${q://QID29/ChoiceGroup/SelectedChoices}"
                      }
                    ]
                  },
                  {
                    "Type": "Standard",
                    "ID": "BL_2lVBP4EOiOwT0Kp",
                    "FlowID": "FL_24"
                  }
                ]
              },
              {
                "Type": "Branch",
                "FlowID": "FL_6",
                "Description": "New Branch",
                "BranchLogic": {
                  "0": {
                    "0": {
                      "LogicType": "Question",
                      "QuestionID": "QID17",
                      "QuestionIsInLoop": "no",
                      "ChoiceLocator": "q://QID17/SelectableChoice/1",
                      "Operator": "Selected",
                      "QuestionIDFromLocator": "QID17",
                      "LeftOperand": "q://QID17/SelectableChoice/1",
                      "Type": "Expression",
                      "Description": "<span class=\"ConjDesc\">If</span> <span class=\"QuestionDesc\">What type of questions will you be using?</span> <span class=\"LeftOpDesc\">multiple choice to multiple choice</span> <span class=\"OpDesc\">Is Selected</span> "
                    },
                    "Type": "If"
                  },
                  "Type": "BooleanExpression"
                },
                "Flow": [
                  {
                    "Type": "EmbeddedData",
                    "FlowID": "FL_10",
                    "EmbeddedData": [
                      {
                        "Description": "Operator",
                        "Type": "Custom",
                        "Field": "Operator",
                        "VariableType": "String",
                        "DataVisibility": [],
                        "AnalyzeText": false,
                        "Value": "${q://QID13/ChoiceGroup/SelectedChoices}"
                      }
                    ]
                  },
                  {
                    "Type": "Standard",
                    "ID": "BL_4IMpxjrEATyLuqV",
                    "FlowID": "FL_19"
                  },
                  {
                    "Type": "Standard",
                    "ID": "BL_bBjaPeuYnHFtBBP",
                    "FlowID": "FL_9"
                  }
                ]
              }
            ]
          },
          {
            "Type": "Standard",
            "ID": "BL_eD0WiECJYD2l0nr",
            "FlowID": "FL_28"
          }
        ]
      },
      {
        "Type": "Standard",
        "ID": "BL_1Mk6LuLiukBnCU5",
        "FlowID": "FL_17"
      },
      {
        "Type": "EndSurvey",
        "FlowID": "FL_16"
      },
      {
        "Type": "WebService",
        "FlowID": "FL_15",
        "URL": "https://co1.qualtrics.com/API/v:version/surveys",
        "Method": "PUT",
        "RequestParams": [],
        "EditBodyParams": [
          {
            "key": "QuestionText",
            "value": "Hello"
          },
          {
            "key": "DataExportTag",
            "value": "Q2"
          },
          {
            "key": "QuestionType",
            "value": "MC"
          },
          {
            "key": "Selector",
            "value": "SAVR"
          },
          {
            "key": "SubSelector",
            "value": "TX"
          },
          {
            "key": "Configuration",
            "value": "{\"QuestionDescriptionOption\":\"UseText\"}",
            "parameterType": "JSON"
          },
          {
            "key": "QuestionDescription",
            "value": "Hello?"
          },
          {
            "key": "Choices",
            "value": "{\"Choices\": {\n          \"1\": {\n            \"Display\": \"Statement 1\"\n          },\n          \"2\": {\n            \"Display\": \"Statement 2\"\n          },\n          \"3\": {\n            \"Display\": \"Statement 3\"\n          }\n        }}",
            "parameterType": "JSON"
          },
          {
            "key": "Language",
            "value": "[]",
            "parameterType": "JSON"
          },
          {
            "key": "Validation",
            "value": "{\"Settings\": {\n            \"ForceResponse\": \"OFF\",\n            \"ForceResponseType\": \"ON\",\n            \"Type\": \"None\"\n          }}",
            "parameterType": "JSON"
          }
        ],
        "Body": {
          "QuestionText": "Hello",
          "DataExportTag": "Q2",
          "QuestionType": "MC",
          "Selector": "SAVR",
          "SubSelector": "TX",
          "Configuration": {
            "QuestionDescriptionOption": "UseText"
          },
          "QuestionDescription": "Hello?",
          "Choices": {
            "Choices": {
              "1": {
                "Display": "Statement 1"
              },
              "2": {
                "Display": "Statement 2"
              },
              "3": {
                "Display": "Statement 3"
              }
            }
          },
          "Language": [],
          "Validation": {
            "Settings": {
              "ForceResponse": "OFF",
              "ForceResponseType": "ON",
              "Type": "None"
            }
          }
        },
        "ContentType": "application/json",
        "Headers": [
          {
            "key": "x-api-token",
            "value": "h69TKYgxu46SMEXzcKkeRUXovq2jALTpHDhPUGLq"
          }
        ],
        "ResponseMap": [],
        "FireAndForget": false,
        "SchemaVersion": 0,
        "StringifyValues": true
      }
    ],
    "Properties": {
      "Count": 61,
      "RemovedFieldsets": []
    }
  }

    var ArrayOfBlockIDs = []
    var RecursionCount = 0;
    function GroupRecursion(item){

        for(i=0;i<item.Flow.length;i++){


            if(item.Flow[i].Type=="Standard" && ArrayOfBlockIDs.includes(item.Flow[i].ID)==false || item.Flow[i].Type=="Block" && ArrayOfBlockIDs.includes(item.Flow[i].ID)==false){
                    ArrayOfBlockIDs.push(item.Flow[i].ID)

            }

            if(item.Flow[i].Type=="Group" || item.Flow[i].Type=="Branch"){

                GroupRecursion(item.Flow[i])


            } 



        }


        console.log(ArrayOfBlockIDs)
    }

GroupRecursion(Payload);
var有效载荷={
“类型”:“根”,
“FlowID”:“FL_1”,
“流动”:[
{
“类型”:“组”,
“FlowID”:“FL_27”,
“说明”:“通过1”,
“流动”:[
{
“类型”:“嵌入数据”,
“FlowID”:“FL_7”,
“嵌入式数据”:[
{
“说明”:“JSON”,
“类型”:“收件人”,
“字段”:“JSON”,
“VariableType”:“字符串”,
“数据可见性”:[],
“分析文本”:错误
},
{
“说明”:“DisplayLogicFrom”,
“类型”:“收件人”,
“字段”:“DisplayLogicFrom”,
“VariableType”:“字符串”,
“数据可见性”:[],
“分析文本”:错误
},
{
“说明”:“DisplayLogicAt”,
“类型”:“收件人”,
“字段”:“DisplayLogicAt”,
“VariableType”:“字符串”,
“数据可见性”:[],
“分析文本”:错误
}
]
},
{
“类型”:“分支机构”,
“FlowID”:“FL_54”,
“说明”:“新分支机构”,
“BranchLogic”:{
"0": {
"0": {
“LogicType”:“EmbeddedField”,
“左操作数”:“APITest”,
“操作员”:“EqualTo”,
“RightOperator”:“True”,
“隐藏的表达”:假,
“类型”:“表达式”,
“说明”:“如果APITest等于True”
},
“类型”:“如果”
},
“类型”:“布尔表达式”
},
“流动”:[
{
“类型”:“标准”,
“ID”:“BL_4NL909leoyn5KBf”,
“FlowID”:“FL_51”
},
{
“类型”:“标准”,
“ID”:“BL_bBGbASH2RnPCskt”,
“FlowID”:“FL_59”
},
{
“类型”:“WebService”,
“FlowID”:“FL_50”,
“URL”:”https://co1.qualtrics.com/API/v3/surveys",
“方法”:“发布”,
“请求参数”:[],
“EditBodyParams”:[
{
“密钥”:“文件”,
“值”:“${e://Field/TEST}”
},
{
“键”:“名称”,
“价值”:“新调查”
}
],
“正文”:[
{
“密钥”:“文件”,
“值”:“${e://Field/TEST}”
},
{
“键”:“名称”,
“价值”:“新调查”
}
],
“ContentType”:“application/x-www-form-urlencoded”,
“标题”:[
{
“密钥”:“x-api-token”,
“值”:“H69TKYGXU46SMEXZCKKERUXOVQ2JALTPHPUGLQ”
}
],
“响应映射”:[
{
“key”:“meta.requestId”,
“值”:“meta.requestId”
},
{
“key”:“meta.error.errorCode”,
“值”:“meta.error.errorCode”
},
{
“key”:“meta.error.errorMessage”,
“值”:“meta.error.errorMessage”
},
{
“密钥”:“meta.httpStatus”,
“值”:“meta.httpStatus”
}
],
“放火而忘记”:错,
“阴谋厌恶”:0,
“StringifyValues”:true
},
{
“类型”:“标准”,
“ID”:“BL_4Yhl7MpygFG9Z6B”,
“FlowID”:“FL_53”
}
]
},
{
“类型”:“标准”,
“ID”:“BL_0GHahOV7Hb9l141”,
“FlowID”:“FL_3”
},
{
“类型”:“分支机构”,
“FlowID”:“FL_5”,
“说明”:“新分支机构”,
“BranchLogic”:{
"0": {
"0": {
“逻辑类型”:“问题”,
“问题ID”:“QID4”,
“问题列表”:“否”,
“ChoiceLocator”:“q://QID4/SelectableChoice/1”,
“操作员”:“已选择”,
“QuestiondFromLocator”:“QID4”,
“LeftOperator”:“q://QID4/SelectableChoice/1”,
“类型”:“表达式”,
“说明”:“如果您想做什么?检查我的调查和选择的问题是否有自定义验证/强制响应”
},
“类型”:“如果”
},