JSFiddle - React, Tailwind, and code Playground

by Luiza CICONE

HTML

<pre id='result'>

</pre>

JavaScript

function constructDirecory(directory, name) {
  // create list of files
  var files = [];
  if (directory.files) {
    directory.files.forEach(function(fileName) {
      files.push({
        name: fileName
      });
    });
  }
  // loop list directories
  var directories = [];
  for (var childDirectoryName in directory) {
    if (directory.hasOwnProperty(childDirectoryName)) {
      if (childDirectoryName !== 'files') {
        // it's a directory, see what's inside
        var childDirectoryData = directory[childDirectoryName];
        var directoryData = constructDirecory(childDirectoryData, childDirectoryName);
        directories.push(directoryData);
      }
    }
  }
  return {
    name: name || 'root',
    files: files,
    directories: directories
  };
}

var data = {
  "C:": {
    "files": [],
    "DataStore": {
      "files": ["Continuous_2016-02-26_15.08.11.dat",
        "Continuous_2016-02-26_15.38.10.dat",
        "Continuous_2016-02-26_16.08.09.dat",
      ],
      "c4": {
        "160226": {
          "files": [
            "Continuous231.dat",
            "Continuous_2016-02-26_16.21.58.dat",
            "Continuous_2016-02-26_16.31.58.dat",
            "Continuous_2016-02-26_16.41.58.dat",
            "Continuous_2016-02-26_16.51.58.dat",
            "Continuous_2016-02-26_17.01.58.dat",
            "Continuous_2016-02-26_17.11.57.dat",
            "Continuous_2016-02-26_17.21.57.dat",
            "Continuous_2016-02-26_17.31.57.dat",
            "Continuous_2016-02-26_17.41.57.dat"
          ]
        },
        "files": []
      }
    }
  }
};

var result = constructDirecory(data);
$('#result').text(JSON.stringify(result, null, 2))