Методы получения информации о массиве
Методы получения информации о массиве
Технический фундамент методов чтения массива
Методы этого урока предназначены для чтения информации о массиве: длины, позиции, наличия элемента.
Они не меняют содержимое массива и подходят для безопасных проверок перед обработкой.
const data = [10, 20, 30];
const size = data.length;
const has20 = data.includes(20);
console.log(data); // [10, 20, 30]
console.log(size, has20); // 3 true
Ключевой момент: сначала читаем состояние массива, потом принимаем решение о дальнейших действиях.
length — базовая информация
length возвращает количество элементов.
const users = ['Ann', 'Max', 'Leo'];
console.log(users.length); // 3
console.log(users[users.length - 1]); // Leo
Проверь себя: что вернет length у пустого массива []?
at() и доступ к элементам
Метод at(index) возвращает элемент по индексу. Важный плюс: поддерживает отрицательные индексы.
const prices = [100, 250, 420];
console.log(prices.at(0)); // 100
console.log(prices.at(-1)); // 420
Для «последнего элемента» at(-1) читается проще, чем arr[arr.length - 1].
indexOf и lastIndexOf
indexOf(value) ищет первое вхождение и возвращает индекс или -1, если не найдено.
const tags = ['js', 'react', 'js'];
console.log(tags.indexOf('js')); // 0
console.log(tags.lastIndexOf('js')); // 2
console.log(tags.indexOf('vue')); // -1
Здесь часто ошибаются: проверяют if (arr.indexOf('js')), а индекс 0 воспринимается как false. Безопасно проверять !== -1.
includes — булева проверка наличия
includes(value) сразу возвращает true или false.
const roles = ['admin', 'editor', 'viewer'];
console.log(roles.includes('admin')); // true
console.log(roles.includes('owner')); // false
Если тебе нужна только проверка «есть/нет», includes обычно лучше, чем indexOf.
Смотри, что важно: includes умеет находить NaN, а indexOf — нет (потому что NaN !== NaN).
const values = [1, NaN, 3];
console.log(values.includes(NaN)); // true
console.log(values.indexOf(NaN)); // -1
Что будет, если изменить входные данные
const ids = [1, 2, 3];
console.log(ids.includes('2')); // false
console.log(ids.includes(2)); // true
Сравнение в includes строгое по типу. Строка '2' и число 2 — разные значения.
Микро-сценарии
- Проверка «пустого состояния» списка заказов.
function hasOrders(orders) {
return orders.length > 0;
}
- Валидация роли пользователя перед доступом к странице.
function canAccessAdmin(roles) {
return roles.includes('admin');
}
Типичные ошибки
- Путать
indexOfиincludes. - Не обрабатывать результат
-1. - Забывать про строгую проверку типа.
- Доставать последний элемент через
arr[arr.length].
Краткий итог
lengthпоказывает размер массива.at()удобен для доступа, особенноat(-1).indexOf/lastIndexOfдают позицию элемента.includesдает быстрый ответtrue/falseо наличии.- Корректные проверки массива — основа устойчивой логики.