JSFiddle - React, Tailwind, and code Playground

by alim1990

JavaScript

var outputArray = [];

// Send data["children"]
function recursive(data, append_name) {
  for (parent_key in data) {
    var dim_type = data[parent_key]["type"];
    var dim_label = "";
    var dim_name = data[parent_key]["name"];
    if (typeof(data[parent_key]["label"])=="object") {
    	dim_label = data[parent_key]["label"]["english"];
    }
    else {
    	dim_label = data[parent_key]["label"];
    }
    
    for (child_key in data[parent_key]["children"]){
    	//console.log(data[parent_key]["children"][child_key])
      var child_label = data[parent_key]["children"][child_key]["label"]["english"];

      if (append_name == "" || append_name == undefined) {
      	var child_name = data[parent_key]["children"][child_key]["name"];
      } else {
      	var child_name = append_name+"/"+data[parent_key]["children"][child_key]["name"];
      }
      if("children" in data[parent_key]["children"][child_key]) {
      	recursive(data[parent_key]["children"][child_key]["children"], dim_name)
      }
      else {
      	outputArray.push({"dim_label": dim_label,
        									"dim_name": dim_name,
                          "child_name": dim_name+"/"+child_name,
                          "child_label": child_label})
      }
      console.log(outputArray, "")
    }
    //console.log(key, dim_label, dim_name, dim_type);
  }
}

var data = {
    "name": "Info",
    "title": "Info",
    "default_language": "default",
    "id_string": "...",
    "type": "survey",
    "children": [
        {
            "type": "text",
            "name": "basic_info",
            "label": "Basic Info",
            "children": [
                {
                    "type": "text",
                    "name": "name",
                    "label": {
                        "english": "What is your name"
                    }
                },
                {
                    "type": "text",
                    "name": "address",
                    "label": {
                       ...