Почему мое решение задачи не работает и переполняется стек?
Вероятно, клонируемый объект содержит циклические ссылки, типа const a = {};
const b = {};
a.b = b;
b.a = a;

cloneDeep(a); // бесконечный цикл
Попробуйте подсмотреть реализацию cloneDeep() в loDash. В реале там вызывается baseClone()

Можно сохранять каждый обработанный ранее объект в Map – и проверять, не имели ли с ним уже дела ранее – тогда вместо изготовления ещё одной копии просто вставлять ранее сделанный клон.
Вероятно, клонируемый объект содержит циклические ссылки, типа const a = {};
const b = {};
a.b = b;
b.a = a;

cloneDeep(a); // бесконечный цикл
Попробуйте подсмотреть реализацию cloneDeep() в loDash. В реале там вызывается baseClone()

Можно сохранять каждый обработанный ранее объект в Map – и проверять, не имели ли с ним уже дела ранее – тогда вместо изготовления ещё одной копии просто вставлять ранее сделанный клон.