JSFiddle - React, Tailwind, and code Playground

by shubham sharma

HTML

<button onclick="parseToArray()">parse</button>
<!-- <textarea id="parseit" rows="10" cols="50"></textarea> -->

<!-- <button onclick="myFunction()">data</button> -->

JavaScript

var final = [];
var working = {};

function parseToArray() {
	var str = "- List item\r\n\t - list item 3\r\n\t\t - list item 4\r\n\t\t\t - list item 10\r\n\t\t\t\t - list item 11\r\n - list item 7\r\n\t - list item 8\r\n\t\t - list item 9\r\n\t\t\t - list item 12\r\n\t\t\t\t - list item 13\r\n\t\t\t\t\t - list item 14\r\n - list item 15\r\n\t - list item 16\r\n\t\t - list item 17\r\n\t\t\t - list item 18\r\n\t\t\t\t - list item 19\r\n\t\t\t\t\t - list item 20".trim();  
  var strAr = str.split("\r\n");
  var strObj =[];
  for(i in strAr) {
    var tempStr = strAr[i];
    var tempObj = {};
    tempObj["level"] =  (tempStr.match(/\t/g) || []).length;
    
    tempObj["value"] = tempStr.replace(/\t/g,"").replace(/- /g, "").trim();
    
    strObj.push(tempObj);
  }
  console.log(strObj);
  addToJson(strObj);

	console.log('final',final);
  var taxonomies = final.map(function(v) {
    return v.name.split("/");
  });
  console.log('taxonomies',taxonomies);
  for (var i = 0; i < taxonomies.length; i++) {
    addToHeirarchy(taxonomies[i], 1, working);
  };
  

  console.log(working,"json",JSON.stringify(working, null, 4));
  
  var treeChilderen = {
    "name" : "ROOT",
    "children" : remapHeirarchy(working)
  };
  console.log(treeChilderen,"array",JSON.stringify(treeChilderen, null, 4));
};

function remapHeirarchy(item) {
	var children = [];
	for (var k in item) {
	  
		var obj = {
			"name": k
		};

		var subData = remapHeirarchy(item[k]);

		if(subData.length > 0) {
			obj["children"] = remapHeirarchy(item[k]);
		}
	  
		children.push(obj);
	}
	return children;
}


function addToHeirarchy(val, level, heirarchy) {
	// console.log(val, level, heirarchy,val[level],val[level] && val[level] !== "");
  if (val[level]) {
    if (!heirarchy.hasOwnProperty(val[level])) {

      heirarchy[val[level]] = {};

      if(typeof val[level+1] == "undefined") {
        heirarchy[val[level]] = 0;
      }
    }
    addToHeirarchy(val, level + 1, heirarchy[val[level]]);
 ...