@Aztart

Почему не работатет рекурсивный парсинг YAML-файла с текстовым типом значений?

Структура YAML:

main :
  key_0 :
    key_00 : 00
    key_01 : 01
    key_02 :
      key_000 : 000
      key_001 : 001
  key_1:
    key_10 : 10
    key_11 : 11
  key_2:
    key_20 : 20
    key_21 : 21


Рекурсивный алгоритм:
let items = dv.current().main; //функции среды
let index_list = {};

function create_index_list( info ) {

	function iteration_items(object) {
		for (let i in object) {
			if (i == info) {
				index_list[info] = object[i];
			} else {
				iteration_items(object[i]);
			}
		}
	}
	iteration_items(items);
}
create_index_list("key_0");

dv.span(index_list); //Это вывод


Вывод:
key_0:
  key_00: 0
  key_01: 1
  key_02:
    key_000: 0
    key_001: 1


Если:
create_index_list("key_02");

То вывод:
key_02:
  key_000: 0
  key_001: 1


То есть, алгоритм исправно работает и всё хорошо. Но если значения ключей в YAML имеют тип строки, а не числа, выводится ошибка:
Evaluation Error: RangeError: Maximum call stack size exceeded


Нужно, чтобы алгоритм работал в любом случае, вне зависимости от типа значений. Не могу понять, почему код исполняется безконечно.
P.S. Не обращайте внимания на некоторые странные записи, код исполняется внутри своеобразной среды.
  • Вопрос задан
  • 29 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы