Структура 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. Не обращайте внимания на некоторые странные записи, код исполняется внутри своеобразной среды.