test-task-treerender

Форк
0
/
createNodes.js 
39 строк · 1.5 Кб
1
/**
2
 * Функция для создания массива узлов дерева
3
 * @param {*} str - Исходная строка, пример: (1 (2 (4 5 6 (7) 108 (9)) 3))
4
 */
5
export function createNodes(str) {
6
  const nodes = [];
7

8
  let currentLevel = -1; // Текущий уровень вложенности для числа
9
  let currentValueNumber = ""; // Текущая строка, представляющая в конечном итоге число
10
  let currentIndex = 0; // Индекс текущего элемента в массиве узлов
11

12
  for (let i = 0; i < str.length; i++) {
13
    if (str[i] === "(" || str[i] === ")" || str[i] === " ") {
14
      // Если существует составленное число, добавляем его в массив
15
      if (currentValueNumber) {
16
        const node = {
17
          value: currentValueNumber,
18
          level: currentLevel,
19
          index: currentIndex,
20
        };
21

22
        nodes.push(node);
23

24
        currentValueNumber = ""; // Устанавливаем текущее число в пустую строку
25
        currentIndex++; // Увеличиваем индекс элемента
26
      }
27

28
      // Изменяем уровень вложенности
29
      if (str[i] === "(") currentLevel++;
30
      if (str[i] === ")") currentLevel--;
31
    }
32
    // Добавляем цифру в результирующей строке представляющей число
33
    else {
34
      currentValueNumber += str[i];
35
    }
36
  }
37

38
  return nodes;
39
}
40

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.