JSFiddle - React, Tailwind, and code Playground

JavaScript

data = [{
  "id": 1,
  "parent": 0,
  "name": "Parent"
}, {
  "id": 2,
  "parent": 1,
  "name": "Child 1"
}, {
  "id": 3,
  "parent": 2,
  "name": "Grand Child 1"
}, {
  "id": 4,
  "parent": 2,
  "name": "Grand Child 2"
}, {
  "id": 5,
  "parent": 1,
  "name": "Child 2"
}]

function findAllChildren (id, results, depth) {
	for (d in data) {
		if (data[d].parent == id) {
			data[d].depth = depth
			results.push(data[d])
			findAllChildren(data[d].id, results, depth + 1)
		}
	}
}

var results = []
findAllChildren(1, results, 0)

$('body').append(results.map(function (element) { return Array(element.depth + 1).join(' -> ') + element.name + '<br>' }))
console.log(results)