从数组中删除最后一项
我有以下数组。
var arr = [1,0,2];
我想删除最后一个元素,即2。
我用了arr.slice(-1);
但它不会删除这个值。
使用拼接(索引,howmany)
arr.splice(-1,1)
var numbers = ["one", "two", "three", "four"]; var popped = numbers.pop(); console.log(popped) // "four" console.log(numbers) // ["one", "two", "three"]
MDN上的Array.prototype.pop的文档
你可以使用.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="jquery.min.js"></script> <b>Original Array : </b> <div id="div1"></div> <br/> <b>After slice(0, -1): </b> <div id="div2"></div>
你将需要这样做,因为slice
不会改变原始数组。
arr = arr.slice(-1);
如果你想改变原始数组,你可以使用splice
:
arr.splice(-1, 1);
或pop
:
arr.pop();
通过实例学习:
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]
这里有一个函数,解释如下:
arr.pop();
你可以简单的使用arr.pop()
这将删除数组的最后一项。
var arr = [1,0,2]; var popped = arr.pop();//Now arr = [1,0] & popped = 2
arr.slice(-1)
将返回数组最后一个元素的副本 ,但arr.slice(-1)
原始数组不变。
要从数组中删除最后n
元素,请使用arr.splice(-n)
(注意“拼接”中的“p”)。 返回值将是包含已删除元素的新数组。
更简单的是,对于n == 1
,使用val = arr.pop()
var arr = [1,0,2]; arr.length--;
//删除最后一个元素//需要检查arr.length> 0
此方法更有助于删除和存储数组的最后一个元素。
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
拼接(索引,howmany) – 这个解决scheme听起来不错。 但是这个howmany只能用于正数组索引。 要删除最后两个项目或三个项目使用索引本身。
例如,splice(-2)删除最后两个项目。 拼接(-3)去除最后三个项目。
说你有var arr = [1,0,2]
arr.splice(-1,1)
会返回给你array [1,0];
而arr.slice(-1,1)
将返回给你array [2];
值得注意的是, 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
var stack = [1,2,3,4,5,6]; stack.reverse().shift(); stack.push(0);
输出将是: Array [0,1,2,3,4,5] 。 这将允许你保持相同数量的数组元素,你推新的值。
这是删除最后一项的好方法:
if (arr != null && arr != undefined && arr.length > 0) { arr.splice(arr.length - 1, 1); }
拼接细节如下:
拼接(startIndex,拼接数量)
用Lodash你可以使用dropRight ,如果你不在乎知道哪些元素被删除:
_.dropRight([1, 2, 3]) // => [1, 2] _.dropRight([1, 2, 3], 2); // => [1]
我会考虑.pop()
是最“正确的”解决scheme,但有时它可能无法正常工作,因为你需要使用数组没有最后一个元素在那里…
在这种情况下,您可能需要使用以下内容
var arr = [1,2,3,4]; console.log(arr.splice(0,arr.length-1));