JSFiddle - React, Tailwind, and code Playground

JavaScript

var list = [
	    {"id": 1, "parentId": null, "text": "Первая строка"}, 
	    {"id": 2, "parentId": 3,    "text": "Вторая строка"}, 
	    {"id": 3, "parentId": 1,    "text": "Третья строка"},
	    {"id": 4, "parentId": 1,    "text": "Четвёртая строка"},
	    {"id": 5, "parentId": null, "text": "Пятая строка"}, 
	    {"id": 6, "parentId": 5,    "text": "Шестая строка"}, 
	    {"id": 7, "parentId": 6,    "text": "Седьмая строка"}, 
	    {"id": 8, "parentId": 5,    "text": "Восьмая строка"}
	];

	var stack = list.filter(node => node.parentId === null);

	while (stack.length) {
		var current = stack.pop();
		console.log(current.id);
    stack = stack.concat(list.filter(node => node.parentId === current.id));
	}