Глиф Учебники

Как проверить, что массив пустой

Справочник · JavaScript · 1 минута чтения

JavaScript
const items = [];

if (items.length === 0) {
  console.log("Массив пустой");
}
Вывод
Массив пустой

У массива есть свойство length — число элементов. Пустой массив — тот, у которого length равен нулю. Короче то же самое: if (!items.length).

Что не работает

JavaScript
const empty = [];

console.log(Boolean(empty));
console.log(empty === []);
console.log(empty == false);
Вывод
true
false
true

Если там может быть не массив

Данные с сервера или из чужой функции могут прийти как null, undefined или вообще не массив. Тогда items.length упадёт с ошибкой Cannot read properties of null. Надёжная проверка:

JavaScript
function isEmptyList(value) {
  return !Array.isArray(value) || value.length === 0;
}

console.log(isEmptyList([]));
console.log(isEmptyList([1, 2]));
console.log(isEmptyList(null));
console.log(isEmptyList(undefined));
Вывод
true
false
true
true

Array.isArray(value) — true, только если значение — массив. Через typeof массив не отличить: он возвращает "object" и для массива, и для null.

Короткий вариант без проверки типа — !value?.length: он даёт true для null, undefined и пустого массива. Но и для пустой строки тоже — у строк есть length.

Пустой объект и пустая строка

У объекта нет length. Пуст ли он, показывает число его ключей:

JavaScript
const settings = {};
console.log(Object.keys(settings).length === 0);

const text = "   ";
console.log(text === "");
console.log(text.trim() === "");
Вывод
true
false
true

Строка из одних пробелов — не пустая. Если пробелы не считаются (например, в поле ввода), сначала уберите их методом trim().