Перепишите рекурсию на цикл
https://habr.com/ru/articles/550534/
вобще по хорошему подрубиться бы профайлером к сборке и посмотреть ан что именн опамять утекает, но в случае в свебапком это может быть не просто
Это нужно делать не на рекурсии а через структуру стек, так как любая рекурсия может быть переписана на стеке
значит не угадали
Подключайте профайлер и смотрите куда утекает память
Почему не использовать библиотеку для этого? Зачем свой велосипед писать)
export const collapseOnStack = (obj: Record<string, any>) => { const result: Record<string, any> = {}; const stack: any[] = Object.entries(obj); const createKey = (key: string, prefix: string) => (prefix ? ${prefix}.${key} : key); while (stack.length) { const [key, value] = stack.pop(); if (typeof value !== "object") { result[key] = value; } const initialKey = createKey(key, ""); const entries = Object.entries(value); for (let i = entries.length - 1; i >= 0; i--) { const [_key, _value] = entries[i]; stack.push([createKey(_key, initialKey), _value]); } } console.log(result); return result; }; Попробуй мой код запустить , я писал такую же утилиту, ошибок не было
Посмотрю спасибо 👍
Обсуждают сегодня