У меня есть следующий массив.
var arr = [1,0,2];
Я хотел бы удалить последний элемент, т.е. 2.
Я использовал arr.slice(-1);
, но он не удаляет значение.
У меня есть следующий массив.
var arr = [1,0,2];
Я хотел бы удалить последний элемент, т.е. 2.
Я использовал arr.slice(-1);
, но он не удаляет значение.
Используйте сращивание (индекс, сколько угодно)
arr.splice(-1,1)
Array.prototype.pop() по соглашению JavaScript.
let fruit = ['apple', 'orange', 'banana', 'tomato'];
let popped = fruit.pop();
console.log(popped); // "tomato"
console.log(fruit); // ["apple", "orange", "banana"]
Вы можете сделать это с помощью метода .slice()
:
arr.slice(0, -1); // returns [1,0]
Вот демо:
var arr = [1, 0, 2];
var newArr = arr.slice(0, -1); // returns [1,0]
console.log(newArr);
$('#div1').text('[' + arr + ']');
$('#div2').text('[' + newArr + ']');
<script src="http://code.jquery.com/jquery.min.js"></script>
<b>Original Array : </b>
<div id="div1"></div>
<br/>
<b>After slice(0, -1): </b>
<div id="div2"></div>
узнать на примере:
let array_1 = [1,2,3,4];
let array_2 = [1,2,3,4];
let array_3 = [1,2,3,4];
array_1.splice(-1,1) // output --> [4] array_1 = [1,2,3]
array_2.slice(0,-1); // output --> [1,2,3] array_2 = [1,2,3,4]
array_3.pop(); // output --> 4 array_3 = [1,2,3]
Вам нужно будет это сделать, поскольку slice
не изменяет исходный массив.
arr = arr.slice(-1);
Если вы хотите изменить исходный массив, вы можете использовать splice
:
arr.splice(-1, 1);
или pop
:
arr.pop();
Для этого есть функция, объяснение здесь:
arr.pop();
Я считаю, что .pop()
- самое "правильное" решение, однако иногда оно может не сработать, так как вам нужно использовать массив без последнего элемента прямо там...
В таком случае вы можете использовать следующее, он вернет [1,2,3]
var arr = [1,2,3,4];
console.log(arr.splice(0,arr.length-1));
Вы можете просто использовать arr.pop()
Это удаляет последнюю запись массива.
var arr = [1,0,2];
var popped = arr.pop();//Now arr = [1,0] & popped = 2
Вы можете сделать это двумя способами, используя splice()
:
arr.splice(-1,1)
arr.splice(arr.length-1,1)
splice(position_to_start_deleting, how_many_data_to_delete)
принимает два параметра.
position_to_start_deleting
: Индекс, начинающийся с нуля, с которого начинается удаление. how_many_data_to_delete
: из указанного индекса, сколько последовательных данных должны быть удалены.
Вы также можете удалить последний элемент, используя pop()
как pop()
удаляет последний элемент из некоторого массива.
Используйте arr.pop()
arr.slice(-1)
вернет копию последнего элемента массива, но исходный массив не модифицируется.
Чтобы удалить последние элементы n
из массива, используйте arr.splice(-n)
(обратите внимание на "p" в "сращивании" ). Возвращаемым значением будет новый массив, содержащий удаленные элементы.
Еще проще, для n == 1
используйте val = arr.pop()
Этот метод более полезен для удаления и сохранения последнего элемента массив.
var sampleArray = [1,2,3,4];// Declaring the array
var lastElement = sampleArray.pop();//this command will remove the last element of `sampleArray` and stores in a variable called `lastElement` so that you can use it if required.
Теперь результаты:
console.log(sampleArray); //This will give you [1,2,3]
console.log(lastElement); //this will give you 4
var arr = [1,0,2];
arr.length--;
//удаляет последний элемент // нужно проверить, если arr.length > 0
var names = ["harry", "aahan", "arav", "you"];
names
names.pop();
splice (index, howmany) - Это решение кажется хорошим. Но этот howmany будет работать только для индекса положительного массива. Чтобы удалить последние два элемента или три элемента, используйте сам индекс.
Например, сращивание (-2) для удаления двух последних элементов. splice (-3) для удаления трех последних элементов.
Стоит отметить, что slice
будет возвращать новый массив, тогда как .pop()
и .splice()
будут мутировать существующий массив.
Если вам нравится обрабатывать коллекции данных с прикованным командным стилем, вы действительно захотите придерживаться slice
для чего-то вроде этого.
Например:
myArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var newArrayOfThings = myArray
.filter(x => x > 5) // only bigly things
.slice(-1) // get rid of the last item
.map(x => `The number is: ${x}`);// map to a set of strings
С помощью Lodash вы можете использовать dropRight, если вы не знаете, какие элементы были удалены:
_.dropRight([1, 2, 3])
// => [1, 2]
_.dropRight([1, 2, 3], 2);
// => [1]
var a = [1,2,3,4,5,6];
console.log(a.reverse().slice(1).reverse());
//Array(5) [ 1, 2, 3, 4, 5 ]
скажите, что у вас есть var arr = [1,0,2]
arr.splice(-1,1)
вернется к вам array [1,0];
, а arr.slice(-1,1)
вернется к вам array [2];
Решение ECMA5 2019:
const new_arr = arr.reduce((d, i, idx, l) => idx < l.length - 1 ? [...d, i] : d, [])
Неразрушающий, универсальный, однострочный, требуется только копия & вставьте в конце вашего массива.
Это хороший способ удалить последний элемент:
if (arr != null && arr != undefined && arr.length > 0) {
arr.splice(arr.length - 1, 1);
}
Детали сращивания следующим образом:
сращивание (startIndex, количество сращиваний)
var stack = [1,2,3,4,5,6];
stack.reverse().shift();
stack.push(0);
Выход будет: Массив [0,1,2,3,4,5]. Это позволит вам сохранить такое же количество элементов массива, сколько вы нажимаете новое значение.