В рекурсивном обходе сначала выделите контейнеры — массив и ненулевой объект, — а остальные допустимые значения обрабатывайте как листья.
Как переписать проверку типов в обходе, если в значениях дерева появляются дополнительные примитивные типы, например `string`?
В рекурсивном обходе сначала выделите контейнеры — массив и ненулевой объект, — а остальные допустимые значения обрабатывайте как листья.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В рекурсивном обходе сначала выделите контейнеры — массив и ненулевой объект, — а остальные допустимые значения обрабатывайте как листья.
Array.isArray проверяют отдельно, затем условие value !== null && typeof value === 'object'. Строку нельзя обходить как произвольный объект, иначе можно рекурсивно попадать в её символы. Для Date, Map и других специальных объектов нужен явно заданный контракт обхода.