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 = [];

function parseToJson(data) {
  console.log(data);
  function addToJson(objAr) {
    var string = "";
    var jump = false;
  	for(var i=0;i<objAr.length;i++) {
    	console.log("i",i);
    	string += "/"+ objAr[i].value;
      	console.log(i,"out",objAr[i]);
      if(typeof objAr[i+1] === "undefined" ) {
      	console.log(i,"inside",objAr[i+1],objAr);
        final.push(string);
      } else {
        if(objAr[i].level == objAr[i+1].level) {
          objAr.splice(i,1);
          final.push(string);
          addToJson(objAr);
        }    
        function rmv(index) {
          if(typeof objAr[index-1] !== "undefined"
            &&objAr[index-1].level == objAr[index].level) {
              objAr.splice(index-1,1);
              i = index - 1;
              rmv(i);
          }
        }
        if(objAr[i].level > objAr[i+1].level) {
          objAr.splice(i,1);
          rmv(i);

          final.push(string);
          addToJson(objAr);
        }
      }
    };
  };
  addToJson(data);
  console.log(final);
};

function parseToArray() {
	var str = " - List item\r\n\t - list item 2\r\n\t - list item 3\r\n\t\t - list item 4\r\n\t - list item 5\r\n\t - list item 6\r\n - list item 7\r\n\t - list item 8\r\n\t\t - list item 9".trim();  
  var strAr = str.split("\r\n");
  var strObj =[];
  for(i in strAr) {
  	// console.log('i', strAr[i]);
    var tempStr = strAr[i];
    var tempObj = {};
    // console.log();
    tempObj["level"] =  (tempStr.match(/\t/g) || []).length;
    
    tempObj["value"] = tempStr.replace(/\t/g,"").replace(/- /g, "").trim();
    
    strObj.push(tempObj);
  }
  parseToJson(strObj)
};