Логотип YeaHub

Глубокое клонирование объекта без JSON (Deep Clone Without JSON)

3

GoJavaJavaScriptPython

Объекты

Trading view

Условие:
Реализуйте функцию глубокого клонирования произвольной структуры данных без использования JSON.parse/JSON.stringify. Клон должен быть полностью независим от оригинала: изменение вложенных объектов или массивов в клоне не должно влиять на исходную структуру, и наоборот.

Структура может содержать: примитивы (числа, строки, булевы значения), вложенные объекты, вложенные массивы (в том числе разреженные/с "дырками" — пустыми слотами), и произвольную глубину вложенности.

Входные данные:
Значение произвольного типа: примитив, объект или массив, с возможной вложенностью любой глубины (объекты внутри массивов, массивы внутри объектов и т.д.).

Выходные данные:
Глубокая копия входного значения той же структуры.

Ограничения:

  • Глубина вложенности не превышает 20 уровней

  • Циклические ссылки не встречаются

  • Значения — только примитивы, обычные объекты (plain objects) и массивы (без функций, дат, Map/Set и т.п.)

Пример:

Вход: { a: 1, b: { c: [1, 2, "3"] }, d: [] }
Выход: { a: 1, b: { c: [1, 2, "3"] } (независимая копия), d: [] }
Loading...