Определение пустоты массива или объекта

Для массива проверяйте length, для объекта — количество собственных ключей. null нужно исключить отдельно, поскольку typeof null равен 'object'.

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

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

Для массива проверяйте length, для объекта — количество собственных ключей. null нужно исключить отдельно, поскольку typeof null равен 'object'.

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

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

Условие

Создайте функцию, принимающую в качестве аргумента либо массив, либо объект. Если аргумент является массивом и не содержит элементов, функция должна вернуть строку «Пустой массив не содержит элементов». Если аргумент — объект без пар ключ‑значение, функция должна вернуть строку «Пустой объект не содержит пар ключ-значение».

Ответ

Для массива проверяйте length, для объекта — количество собственных ключей. null нужно исключить отдельно, поскольку typeof null равен 'object'.

function describeEmpty(value) {
  if (Array.isArray(value)) {
    return value.length === 0 ? 'Пустой массив не содержит элементов' : null;
  }
  if (value !== null && typeof value === 'object') {
    return Reflect.ownKeys(value).length === 0
      ? 'Пустой объект не содержит пар ключ-значение' : null;
  }
  throw new TypeError('Ожидается массив или объект');
}

Для непустого значения здесь возвращается null — условие не задаёт иной результат. Reflect.ownKeys учитывает также символы и неперечисляемые свойства. Речь об обычных объектах данных, не о содержимом Map/Set. Массив с length > 0, даже с пропусками, не считается пустым по этой политике.

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

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

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

Подробнее