Converting array of paths to javascript tree object

Tech:
Javascript
Since:
1 year ago
Views:
9

Let's see how to create a javascript object by converting array of folder/path. This is useful in Nodejs to convert directory structure into Object.

Using Array forEach() & Array reduce()

var structure = {};
let paths = [
  "user/folder1/file1.txt",
  "user/folder1/file2.txt",
  "user/folder1/subFolder1/file3.txt",
  "user/folder1/subFolder2/file4.txt",
  "user/folder1/subFolder3/subFolder4/file5.txt",
  "user/folder2/file1.txt"
];
paths.forEach(p =>
  p.split("/").reduce((o, k) => (o[k] = o[k] || {}), structure)
);

Output:

// console.log(structure);

{
  user: {
    folder1: {
      'file1.txt': {},
      'file2.txt': {},
      subFolder1: { 'file3.txt': {} },
      subFolder2: { 'file4.txt': {} },
      subFolder3: { subFolder4: { 'file5.txt': {} } }
    },
    folder2: { 'file1.txt': {} }
  }
}

Reference:

https://stackoverflow.com/a/54424971