我有以下数组。
var arr = [1,0,2];
我想要移除最后一个元素2。
我使用了arr.slice(-1);
,但它并没有移除该值。
我有以下数组。
var arr = [1,0,2];
我想要移除最后一个元素2。
我使用了arr.slice(-1);
,但它并没有移除该值。
按照JavaScript的约定,使用Array.prototype.pop()方法。
let fruit = ['apple', 'orange', 'banana', 'tomato'];
let popped = fruit.pop();
console.log(popped); // "tomato"
console.log(fruit); // ["apple", "orange", "banana"]
let fruit = ['apple', 'orange', 'banana', 'tomato'];
let popped = [...fruit].pop();
然后 popped
等于 tomato
,而 fruit
仍然等于 ['apple', 'orange', 'banana', 'tomato']
。 - Stuart Kershawarray.splice(-1)
var array = ['abc','def','ghi','123'];
var removed = array.splice(-1); //last item
console.log( 'array:', array );
console.log( 'removed:', removed );
[1].splice(-1, 1)
=> [1]
- Tvaroh[0,1,2] -> [2]
,留下 [0,1]
。如果是这种情况,那么[arr.pop()]
就可以完成任务。 - Ben Hullarray.pop()
会修改 array
,而 slice(0, -1)
则不会。pop()
虽然更快,但并不总是适用于所有需求。 - adelriosantiago你可以使用.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>
不是做:
arr.slice(-1); // returns [2]
这里是一个演示:
var arr = [1, 0, 2];
var newArr = arr.slice(-1); // returns [2]
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(-1): </b>
<div id="div2"></div>
Array.prototype.slice()
或简写为 slice()
方法的基本语法如下:
arr.slice([begin[, end]])
在这里,
begin
参数是一个从零开始的索引,表示从数组中开始提取的位置。所以,假设我们根据上面的示例进行以下操作:
arr.slice(0) // returns [1,0,2]
它将从序列的起始位置0返回所有的数组元素,即[1,0,2]
。同样地,如果我们执行
arr.slice(1) // returns [0,2]
如果传入的起始参数为正值,如例子中的0
,那么该方法将返回从该位置(包括该位置)开始的所有元素,因此在这个例子中会返回[0, 2]
。但是,在您的情况下,传入了一个负数索引,即-1
作为起始参数,它表示从序列末尾的偏移量。因此,在您的情况下,slice(-1)
提取了序列中的最后一个数组元素,即2
(正如我们在上面的示例中已经看到的)。
现在,让我们来谈谈slice()
方法语法中的end
参数。它同样也是一个基于零的索引,表示从数组中提取的结束位置。所以,假设我们有一个数组:
var arr = [1, 0, 2, 5, 3, 9];
我们想要获取数组中的2,5,3
元素。现在,从序列开头开始,2
的位置是2
,最后一个元素3
的位置是4
。我们需要在位置5结束提取,因为我们需要获取该位置之前的元素。所以,我们将在此处简单实现slice()
方法,如下:
arr.slice(2, 5) // returns [2,5,3]
根据您的情况,我们已将-1
实现为结束参数,因此我们的代码如下:
arr.slice(0, -1) // returns [1,0]
作为一个负数索引,end
表示从序列末尾的偏移量。因此,slice(0,-1)
提取序列中第一个元素到倒数第二个元素。这样,我们就得到了期望的输出。我们也可以像下面这样操作:
arr.slice(0, 2) // returns [1,0]
我们将获得相同的输出。但是,我在这里使用了-1
,因为即使对于像此类长数组也更容易实现。
[0,2,3,1,2,9,3,6,3,9,1,0,2,9,0,1,1,2,3,4,7,9,1]
arr.slice(0,22)
一样进行操作。那么您可以简单地在这里实现负索引逻辑,然后执行。arr.slice(0, -1) // same result as arr.slice(0, 22)
arr
中的最后一个项目,而是返回一个新的数组,该数组不包括最后一个项目。正如Mozilla文档所说:“slice()方法将数组的一部分浅复制到一个新的数组对象中。”。 - F Lekschasarr.slice(0, -1)
是最佳答案。 - Tsounabe通过例子来学习:
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) // returned --> [4] array_1 = [1,2,3]
array_2.slice(0,-1); // returned --> [1,2,3] array_2 = [1,2,3,4]
array_3.pop(); // returned --> 4 array_3 = [1,2,3]
array_4.shift(); // returned --> 1 array_4 = [2,3,4]
.splice(-1,1)
,则可以省略,1
,因为splice(-x)
会从第-x
个元素开始删除所有元素,其中第x
个元素是从后面数的第x
个。对于-x
使用-1
,从"最后一个"开始删除所有元素与从"最后一个"开始删除所有元素完全相同。 - Cadoiz由于slice
不会改变原始数组,因此您需要这样做。
arr = arr.slice(0, -1);
如果您想更改原始数组,可以使用splice
:
arr.splice(-1, 1);
或者pop
:
arr.pop();
arr = arr.slice(0, -1);
替代arr = arr.slice(-1);
。 - Swaleh Matongwa.splice(-1,1)
,则可以省略,1
,因为splice(-x)
会从第-x
个元素开始删除所有元素,这是从后面数的第x
个元素。对于-x
的值为-1
,从"最后一个"开始删除所有元素与从"最后一个"开始删除所有元素完全相同。 - Cadoiz我认为.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());
可能并不是理想的情况...
希望这可以为您节省一些时间。
arr.splice(0,arr.length-1)
中省略 0
。 - Cadoiz只需根据您的用例使用以下内容:
var arr = [1,2,3,4];
arr.pop() //returns 4 as the value
arr // value 4 is removed from the **arr** array variable
注意:当您执行pop()
函数时,即使该行返回弹出的项,原始数组也会受到影响并且已弹出的元素被删除。
你可以简单地使用arr.pop()
这将删除数组的最后一个条目。
var arr = [1,0,2];
var popped = arr.pop();//Now arr = [1,0] & popped = 2
arr.slice(-1)
会返回数组的最后一个元素的副本,但不会改变原始数组。
要从数组中删除最后n
个元素,请使用arr.splice(-n)
(注意“splice”中的“p”)。返回值将是包含已删除元素的新数组。
更简单的方法是,对于n == 1
,使用val = arr.pop()
arr.slice(0,-1)
对我来说是最佳解决方案。 - Black Mambasplice()
方法;对于第二种情况,可以使用pop()
方法。 - thoni56arr.splice(-1,1)
会返回数组[1,0]
;arr.slice(-1,1)
会返回[2]
" - Cadoiz