Удалить последний элемент из массива
У меня есть следующий массив:
var arr = [1, 0, 2];
Мне нужно удалить последний элемент, то есть 2.
Я использовал arr.slice(-1);
, но это не удаляет значение из массива. Что я делаю не так? Как правильно удалить последний элемент из массива?
5 ответ(ов)
Конечно! Вот перевод на русский в стиле ответа на StackOverflow:
Чтобы лучше понять, как работают методы массивов в JavaScript, рассмотрим несколько примеров:
let array_1 = [1, 2, 3, 4];
let array_2 = [1, 2, 3, 4];
let array_3 = [1, 2, 3, 4];
let array_4 = [1, 2, 3, 4];
array_1.splice(-1, 1); // Возвращает --> [4] Теперь array_1 = [1, 2, 3]
array_2.slice(0, -1); // Возвращает --> [1, 2, 3] array_2 остается без изменений: [1, 2, 3, 4]
array_3.pop(); // Возвращает --> 4 Теперь array_3 = [1, 2, 3]
array_4.shift(); // Возвращает --> 1 Теперь array_4 = [2, 3, 4]
Объяснение:
splice(): Метод
splice(-1, 1)
удаляет последний элемент массива, который равен4
, и возвращает его. Теперьarray_1
содержит только[1, 2, 3]
.slice(): Метод
slice(0, -1)
возвращает новый массив, содержащий элементы с индекса0
до предпоследнего. Однако оригинальный массивarray_2
остается неизменным.pop(): Метод
pop()
удаляет последний элемент массива и возвращает его. В нашем случаеarray_3
теперь содержит[1, 2, 3]
, а возвращенное значение —4
.shift(): Метод
shift()
удаляет первый элемент массива и возвращает его. В результатеarray_4
теперь равен[2, 3, 4]
.
Эти примеры показывают, как разные методы работают с массивами и как они влияют на оригинальные массивы.
Вам нужно сделать это, так как метод slice
не изменяет оригинальный массив.
arr = arr.slice(0, -1);
Если вы хотите изменить оригинальный массив, вы можете использовать метод splice
:
arr.splice(-1, 1);
или метод pop
:
arr.pop();
Я бы сказал, что метод .pop()
является наиболее 'корректным' решением, однако иногда он может не подойти, если вам нужно использовать массив без последнего элемента прямо здесь.
В таком случае вы можете воспользоваться следующим способом, который вернет [1,2,3]
:
var arr = [1,2,3,4];
console.log(arr.splice(0, arr.length - 1));
В то время как метод .pop()
вернет 4
:
var arr = [1,2,3,4];
console.log(arr.pop());
что может оказаться нежелательным...
Надеюсь, это сэкономит вам время.
Для вашего случая используйте следующий код:
var arr = [1, 2, 3, 4];
arr.pop(); // возвращает 4 как значение
arr; // значение 4 удалено из массива **arr**
Обратите внимание, что когда вы вызываете функцию pop()
, хотя эта строка и возвращает удалённый элемент, оригинальный массив при этом изменяется, и удалённый элемент больше не присутствует в массиве.
Вы можете просто использовать arr.pop()
.
Этот метод удаляет последний элемент массива.
var arr = [1, 0, 2];
var popped = arr.pop(); // Теперь arr = [1, 0], а popped = 2
Как получить первые N элементов массива
Как перемешать (сделать случайным) массив в JavaScript?
Как объединить два массива в JavaScript и удалить дубликаты?
В чем разница между String.slice и String.substring?
Выбор последнего элемента в массиве JavaScript