从数组中删除最后一项

我有以下数组。

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));