кодесурса
«JavaScript

JavaScript: рекурсивно вкладывать данный плоский массив объектов, связанных друг с другом

script1adsense2code
script1adsense3code

Основы 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 программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code