JavaScript: рекурсивно вкладывать данный плоский массив объектов, связанных друг с другом
Основы JavaScript (синтаксис ES6): упражнение-90 с решением
Напишите программу на JavaScript для рекурсивного вложения данного плоского массива объектов.
Примечание. Полезно для размещения комментариев, например, на reddit.com.
Пример решения:
HTML-код:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Nest a given flat array of objects linked to one another recursively</title>
</head>
<body>
</body>
</html>
Код JavaScript:
//#Source https://bit.ly/2neWfJ2
const nest = (items, id = null, link ='parent_id') =>
items
.filter(item => item[link] === id)
.map(item => ({ ...item, children: nest(items, item.id) }));
// One top level comment
const comments = [
{ id: 1, parent_id: null },
{ id: 2, parent_id: 1 },
{ id: 3, parent_id: 1 },
{ id: 4, parent_id: 2 },
{ id: 5, parent_id: 4 }
];
const nestedComments = nest(comments);
console.log(nestedComments);
Пример вывода:
[{ "ID": 1, "parent_id": нулевой, "дети": [{ "ID": 2, "parent_id": 1, "дети": [{ "ID": 4, "parent_id": 2, "дети": [{ "ID": 5, "parent_id": 4, "дети": []}]}]}, { "идентификатор": 3, "parent_id": 1, "дети": []} ]}]
Блок - схема:
Демонстрация в реальном времени:
См. Pen javascript- primary -упражнение-90 от w3resource ( @ w3resource ) на сайте CodePen .
Улучшите этот пример решения и опубликуйте свой код через Disqus
Предыдущий: Напишите программу на JavaScript, которая отрицает функцию предиката.
Далее: Напишите программу на JavaScript, которая будет возвращать значение true, если предоставленная функция предиката возвращает значение false для всех элементов коллекции, в противном случае - значение false.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования