recursion mpjme

by Artem

JavaScript

'use strict';

let categories = [
	{id: 'animals', parent: null},
  {id: 'mammals', parent: 'animals'},
  {id: 'cats', parent: 'mammals'},
  {id: 'dogs', parent: 'mammals'},
  {id: 'chihuahua', parent: 'dogs'},
  {id: 'labrador', parent: 'dogs'},
  {id: 'persian', parent: 'cats'},
  {id: 'siamese', parent: 'cats'},
];

let makeTree = (arr, category) => {
	let node = {};
  arr
  	.filter(c => c.parent === category)
    .forEach(c => node[c.id] = makeTree(arr, c.id));
  return Object.keys(node).length ? node : null;
};

console.log(makeTree(categories, null));