Реализуйте рекурсивную функцию, которая принимает значение, полученное через `JSON.parse` (объект, массив или примитив), и удаляет все falsy-значения из вложенных объектов и массивов.

Рекурсивно обходите JSON-структуру, отбрасывая falsy-значения и сохраняя остальные. Пустые объекты и массивы truthy, поэтому остаются.

Короткий ответ

Что ответить на собеседовании

Рекурсивно обходите JSON-структуру, отбрасывая falsy-значения и сохраняя остальные. Пустые объекты и массивы truthy, поэтому остаются.

Подробный разбор

Ответ с пояснениями

Рекурсивно обходите JSON-структуру, отбрасывая falsy-значения и сохраняя остальные. Пустые объекты и массивы truthy, поэтому остаются.

Договоримся, что для удалённого корневого значения возвращается undefined; исходные данные не меняются.

function removeFalsy(value) {
  if (!value) return undefined;
  if (Array.isArray(value)) return value.filter(Boolean).map(removeFalsy);
  if (typeof value === 'object') {
    return Object.fromEntries(
      Object.entries(value)
        .filter(([, item]) => Boolean(item))
        .map(([key, item]) => [key, removeFalsy(item)])
    );
  }
  return value;
}

Для JSON удаляются null, false, 0 и пустая строка. Строка '0' сохраняется. Время линейно по размеру дерева; чрезмерная глубина может переполнить стек рекурсии.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее