3 простых способа получить последний элемент массива

Как получить последний элемент массива, не зная его индекса? Мы рассмотрим 3 простых способа с объяснениями того, как они работают.

1. Использование array.length

2. Использование array.slice

3. Использование array.pop

1. Использование array.length

TL;DR

const myArray = [‘a’, ‘b’, ‘c’]
const lastElement = myArray[myArray.length — 1] // ‘c’

Объяснение

Это наиболее распространенный метод получения последнего элемента. Он обращается к последнему элементу, вычисляя индекс последнего элемента в массиве.

Индексация массива в javascript начинается с нуля. В нашем примере ниже это означает, что первый элемент 'a' имеет индекс 0, а последний элемент имеет индекс 2.

const myArray = ['a', 'b', 'c']
console.log(myArray[0]) // Output: 'a'
console.log(myArray[1]) // Output: 'b'
console.log(myArray[2]) // Output: 'c'

Но как нам получить доступ к последнему элементу, не зная индекса? Для этого нам нужно будет использовать длину массива, прочитав свойство length.

const myArray = ['a', 'b', 'c']
console.log(myArray.length) // Output: 3

Поскольку счетчик индексов массива начинается с 0, всегда будет разница 1между длиной массива и индексом последнего элемента. Таким образом, мы можем вычислить индекс последнего элемента, вычитая 1 из длины массива. Затем мы можем использовать этот индекс для получения последнего элемента.

const myArray = ['a', 'b', 'c']
const lastElementIndex = myArray.length - 1
console.log(lastElementIndex) // Output: 2
console.log(myArray[lastElementIndex]) // Output: 'c'

Если бы мы хотели получить предпоследний элемент массива, мы бы вычли 2 из длины массива.

const myArray = ['a', 'b', 'c']
const secondToLastElementIndex = myArray.length - 2
console.log(secondToLastElementIndex) // Output: 1
console.log(myArray[secondToLastElementIndex]) // Output: 'b'

2. Использование array.slice

TL;DR

const myArray = ['a', 'b', 'c']
const lastElement = myArray.slice(-1)[0] // 'c'

Объяснение

Метод среза массива возвращает неглубокую копию этого массива с элементами, попадающими в определенный диапазон индексов. Диапазон определяется двумя аргументами: индексом start и индексом end. Оба аргумента являются необязательными. Если индекс start не указан, по умолчанию используется первый элемент. Если индекс end не указан, по умолчанию используется последний элемент. Индекс end не является инклюзивным.

const myArray = ['a', 'b', 'c']
console.log(myArray.slice(1, 3)) // Output: ['b', 'c']
console.log(myArray.slice(1, 2)) // Output: ['b']
console.log(myArray.slice(1)) // Output: ['b', 'c']
console.log(myArray.slice()) // Output: ['a', 'b', 'c']

Если мы используем отрицательный индекс, мы считаем не с начала массива, а с конца.

const myArray = ['a', 'b', 'c']
console.log(myArray.slice(-2)) // Output: ['b', 'c']
console.log(myArray.slice(-1)) // Output: ['c']
console.log(myArray.slice(0, -1)) // Output: ['a', 'b']

Зная, как работает метод slice, мы сначала получаем копию массива только с последним элементом в нем. Получив эту копию, мы можем использовать индекс 0 для доступа к ней.

const myArray = ['a', 'b', 'c']
console.log(myArray.slice(-1)) // Output: ['c']
console.log(myArray.slice(-1)[0]) // Output: 'c'

3. Использование array.pop

TL;DR

const myArray = ['a', 'b', 'c']
const lastElement = myArray.pop() // 'c'
console.log(myArray) // Output: ['a', 'b']

Объяснение

Метод pop удаляет последний элемент из исходного массива, а затем возвращает его. Таким образом, в отличие от методов, описанных выше, этот метод изменяет исходный массив.

Используйте этот метод только в тех случаях, когда вам нужно удалить последний элемент. Используйте два других метода, если вы хотите получить доступ к последнему элементу без изменения исходного массива.