Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Error maximum call stack size exceeded (https://javascript.ru/forum/node-js-io-js/80533-error-maximum-call-stack-size-exceeded.html)

oleg901 17.06.2020 16:04

Error maximum call stack size exceeded
 
Доброго времени суток, есть большой объект на полторы тысячи строк в нем есть вложенные обьекты. Есть рекурсивная функция которая переберает все поля включая вложеные и меняет значения полей совпадения которых были найдены на пустую строку. Какое именно поле будет пустым, передается вторым параметорм функции первым параметром передается сам объект. Вот функция:

function clearPropertiesInObject(obj, value) {
        let result = getProp(obj, value);
        function getProp(obj, value) {
            for (let prop in obj) {
                if (typeof obj[prop] === 'object') {
                        getProp(obj[prop], value)
                } else if (prop === value) obj[prop] = '';
            }
            return obj;
        }
        return result;
    }


    let newObj = clearPropertiesInObject(obj, "email");
    }


Тестировал ее в html файле и браузере вместе с объектом работает корректно попробовал забросить на бэкенд (node js) в проект пишет Error maximum call stack size exceeded подскажите как обойти и в чем проблема? Почему в браузере не выводит переполнение стэка, а нода выводит ходя движки одинаковые. Тестировал html файл в хроме

SuperZen 17.06.2020 18:37

6 строку обернуть в
setTimeout(() => {...code here...}, 0)


можно только про прототипам объектов пробежаться и выставить нужное значение, если все было сделано ) как надо...

voraa 17.06.2020 19:54

Тратить 4 мс на каждый вызов?
Тогда уж лучше queueMicrotask

queueMicrotask( () => getProp(obj[prop], value))

Хотя какая то странность, что в браузере нет переполнения, а в ноде есть.
Может объекты разные?

Alexandroppolus 18.06.2020 11:12

Цитата:

Сообщение от oleg901
есть большой объект на полторы тысячи строк в нем есть вложенные обьекты.

какая максимальная глубина вложенности?
есть ли в объекте циклические ссылки?


Часовой пояс GMT +3, время: 09:06.