Parse directory lines to object

by Aides

HTML

<div>
  <p>Lines:</p>
  <pre id="lines"></pre>
</div>
<div>
  <p>Parsed:</p>
  <pre id="parsed"></pre>
</div>
<div>
  <p>Dir:</p>
  <pre id="dir"></pre>
</div>

JavaScript

// Source Data
var sourceData = "C:\\\nC:\\Test\\\nC:\\Test\\Musik\\\nC:\\Beispielordner\\\nC:\\Beispielordner\\Unterordner 1\\\nC:\\Beispielordner\\Unterordner 1\\Unter-Unterordner 1\\\nC:\\Beispielordner\\Unterordner 1\\Unter-Unterordner 2\\\nC:\\Beispielordner\\Unterordner 1\\Unter-Unterordner 3\\\nC:\\Beispielordner\\Unterordner 2\\\nD:\\\nD:\\\Bilder\\\nD:\\Bilder\\Sonnenuntergang\\\nD:\\Bilder\\Vollmond\\\nD:\\Dokumente\\\nD:\\Dokumente\\a\\\nD:\\Dokumente\\a\\b\\";

var linesElement = document.getElementById('lines');
var parsedElement = document.getElementById('parsed');
var dirElement = document.getElementById('dir');

convert();

function convert() {
  var splitLines = sourceData.split('\n');
  var parsed = parseToObject(splitLines);
  splitLines.forEach(function(line) {
    linesElement.innerHTML += line + '<br>';
  })
  parsedElement.innerHTML += JSON.stringify(parsed, null, 4).replace(/\\\\/g,"\\");
  var dir = parseObjectToDir(parsed, '');
  dirElement.innerHTML += JSON.stringify(dir, null, 4).replace(/\\\\/g,"\\");
}

function parseToObject(lines) {
  var tree = {};

  lines.forEach(function(line) {
    var parts = line.split('\\').filter(function(v) {
      return v
    });
    var element = tree;
    for (var i = 0; i < parts.length; i++) {
      element[parts[i]] || (element[parts[i]] = {});
      element = element[parts[i]];
    }
  })
  return tree;
}

function parseObjectToDir(obj, previousPath) {
  var result = [];
  Object.keys(obj).forEach(function(dir) {
    var newElement = {
      label: dir,
      children: [],
      zugewiesenerOrdner: previousPath + (previousPath ? '\\' : '') + dir
    }
    newElement.children = parseObjectToDir(obj[dir], newElement.zugewiesenerOrdner);
    result.push(newElement)
  })
  return result;
}