PassFront
  1. PassFront
  2. База знаний
  3. Массивы и структуры данных

Как получить сразу первый и последний элементы массива не зная его длины?

Массивы и структуры данных

Первый и последний элементы без знания длины получают: первый — `arr[0]` или `arr.at(0)`, последний — `arr.at(-1)` (современно) или `arr[arr.length - 1]`.

Первый элемент

arr[0];        // первый
arr.at(0);     // то же (современно)
const [first] = arr; // деструктуризация

Последний элемент

arr.at(-1) — современный способ

arr.at(-1); // последний (отрицательный индекс)

at() поддерживает отрицательные индексы (с конца).

arr[arr.length - 1] — классический

arr[arr.length - 1]; // последний

Деструктуризация

const last = arr[arr.length - 1];
// или через slice
const [last2] = arr.slice(-1);

Оба сразу

const first = arr.at(0);
const last = arr.at(-1);

// или деструктуризация
const [first2] = arr;
const last2 = arr.at(-1);

Преимущество at()

at() (ES2022) поддерживает отрицательные индексы — чище, чем arr[arr.length - 1]:

arr.at(-1); // последний
arr.at(-2); // предпоследний

Работает и для строк.

Осторожно

На пустом массиве оба дадут undefined:

[].at(0);  // undefined
[].at(-1); // undefined

Коротко для собеседования

Первый элемент — arr[0] или arr.at(0); последний — arr.at(-1) (современно, ES2022, поддерживает отрицательные индексы) или arr[arr.length - 1] (классика). at() чище для доступа с конца (at(-2) — предпоследний), работает и для строк. На пустом массиве — undefined.

Другие вопросы раздела