Цикл по получению значения из JSON

185
16 мая 2022, 03:10
hearManager.hear('/test', async (context) => {
    var buffer = fs.readFileSync("result.json", "utf-8");
    json = JSON.parse(buffer)
    
    while(Object.keys(json).length > 1){
        names = Object.keys(json);
        lessons = []
        for(let i = 0; i<names.length; i++){
            lessons[i] = (i+1).toString() +". "+names[i];
        }
        context.send(lessons.join("\n"));
        const answer = await context.question("Выберите (от 1 до " + lessons.length.toString() + ")");
        json = json[names[Number(answer.text)-1]]
        if (JSON.stringify(json).includes("{") == false && JSON.stringify(json).includes("https") == true) break;
    }
    context.send(JSON.stringify(json))
});

Есть такой код, который работает до получения финального значения из JSON. Сам файл выглядит примерно вот так:

{
    "Гдз по Математике": {
        "1": {
            "ГДЗ Математика 1 класс  М.И. Моро Просвещение 2016": {
                "Часть 1": {
                    "Страница 4": {
                        "1": "https://gdz.ru/class-1/matematika/moro-m-i-2011/1-4-1/",
                        "2": "https://gdz.ru/class-1/matematika/moro-m-i-2011/1-4-2/",
                        "3": "https://gdz.ru/class-1/matematika/moro-m-i-2011/1-4-3/"
                    },
    ...

И я ищу более этичный способ по поиску значения, чтобы убрать костыль:

if (JSON.stringify(json).includes("{") == false && JSON.stringify(json).includes("https") == true) break;

Т.к. когда он доходит до ссылки, он начинает её разбивать по буквам и также хотелось бы чтобы в итоге он получал значение не в форме "ссылка", а просто текст ссылка без двойных кавычек.

READ ALSO
создать блок(меню ul&gt;li) в js без использования html

создать блок(меню ul>li) в js без использования html

Нужно сделать меню(ul>li*5) в js без html, изначально body в файле indexhtml должен быть пустой, все необходимые элементы генерируются с использованием...

224
js и элементы на странице

js и элементы на странице

Всем приветПрошу помощи

278
Проверить наличие введённой запятой или точки в &lt;input type=&quot;number&quot;&gt;

Проверить наличие введённой запятой или точки в <input type="number">

Как определить тот факт, что в <input type="number"> уже введён символ запятой или точкиДля чего это нужно: в FireFox неприятная особенность, в подобный...

212
Числовой алгоритм на JavaScript

Числовой алгоритм на JavaScript

Дано натуральное числоЕсли в нем есть цифры а и b, то определить, какая из них расположена в числе правее

278