8

Удалить последний элемент из массива

1

У меня есть следующий массив:

var arr = [1, 0, 2];

Мне нужно удалить последний элемент, то есть 2.

Я использовал arr.slice(-1);, но это не удаляет значение из массива. Что я делаю не так? Как правильно удалить последний элемент из массива?

5 ответ(ов)

1

Конечно! Вот перевод на русский в стиле ответа на 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]

Объяснение:

  1. splice(): Метод splice(-1, 1) удаляет последний элемент массива, который равен 4, и возвращает его. Теперь array_1 содержит только [1, 2, 3].

  2. slice(): Метод slice(0, -1) возвращает новый массив, содержащий элементы с индекса 0 до предпоследнего. Однако оригинальный массив array_2 остается неизменным.

  3. pop(): Метод pop() удаляет последний элемент массива и возвращает его. В нашем случае array_3 теперь содержит [1, 2, 3], а возвращенное значение — 4.

  4. shift(): Метод shift() удаляет первый элемент массива и возвращает его. В результате array_4 теперь равен [2, 3, 4].

Эти примеры показывают, как разные методы работают с массивами и как они влияют на оригинальные массивы.

1

Вам нужно сделать это, так как метод slice не изменяет оригинальный массив.

arr = arr.slice(0, -1);

Если вы хотите изменить оригинальный массив, вы можете использовать метод splice:

arr.splice(-1, 1);

или метод pop:

arr.pop();
0

Я бы сказал, что метод .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());

что может оказаться нежелательным...

Надеюсь, это сэкономит вам время.

0

Для вашего случая используйте следующий код:

var arr = [1, 2, 3, 4];
arr.pop(); // возвращает 4 как значение
arr; // значение 4 удалено из массива **arr**

Обратите внимание, что когда вы вызываете функцию pop(), хотя эта строка и возвращает удалённый элемент, оригинальный массив при этом изменяется, и удалённый элемент больше не присутствует в массиве.

0

Вы можете просто использовать arr.pop().

Этот метод удаляет последний элемент массива.

var arr = [1, 0, 2]; 
var popped = arr.pop(); // Теперь arr = [1, 0], а popped = 2
Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь