JavaScript 中的 shift() 方法和 pop() 方法比较?
要使用 JavaScript 从数组中删除元素,可以使用 shift() 和 pop() 函数。但是,它们之间存在细微的差别。pop() 删除数组中的最后一个元素,而 shift() 删除数组中的第一个元素。
使用 shift() 方法时,在删除第零位元素并将后续索引处的数值向下移动后,将返回已删除的值。如果 length 属性为 0,则返回值为 undefined。
shift() 是一个修改数据的函数。它会改变内容和长度。如果你想保持其值不变,但返回一个删除了第一个元素的新数组,请使用 arr.slice(1)。
Array.prototype.shift() 的通用性质允许将其调用或应用于类似数组的对象。对于缺少表示最终连续基于零的数值属性的 length 属性的对象,其行为可能毫无意义。
如果数组为空,此函数返回 undefined,但 pop() 方法会将删除的元素返回到数组中。如果数组为空,此函数的返回值为 undefined。
两种方法都用于将数组的长度减少 1。
shift() 和 pop() 是对象数组的内置函数。
两种方法都会修改原始数组。
语法
shift() array.shift()
返回值
数组中删除的元素;如果数组为空,则为 undefined。
Shift() 方法
示例 1
在这个例子中,让我们了解 JavaScript 中的数组 shift() 方法。
<!DOCTYPE html> <html> <title>Shift() vs pop() methods in JavaScript - TutorialsPoint</title> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body style="text-align:center"> <script> function myFunc() { // Original array let tutpoint = ["Tutorialspoint ", "has free Online", "Tutorials", "and Courses"]; // Check condition in array let result = tutpoint.shift(); document.write(result); document.write("<br />"); document.write(tutpoint); } myFunc(); </script> </body> </html>
示例 2
.shift() 方法还允许我们从现有数组的开头删除一个数组、一个对象或两者。让我们以删除开头数组为例。
<!DOCTYPE html> <html> <title>Shift() vs pop() methods in JavaScript - TutorialsPoint</title> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body style="text-align:center"> <script> let sports = [ ["Football", " Cycling"],"Wrestling", " Shooting"," Hockey", " Badminton " ]; let result = sports.shift(); document.write(result +"<br>"); //output : [ "Football", "Cycling"] document.write(sports); //output: ["Wrestling","Shooting","Hockey", "Badminton"] </script> </body> </html>
pop() 方法
pop() 方法删除数组中的最后一个元素,然后返回已删除的元素。此方法会更改数组的长度。pop() 方法删除数组中的最后一个元素,然后将删除的值返回给调用者。如果对空数组调用 pop(),则返回 undefined。Array.prototype.pop() 和 shift() 的行为类似,但 shift() 只影响数组的第一个元素。
使用 pop() 方法是会改变原数组的。它会改变内容和长度。如果你想返回一个删除了最后一个元素的新数组,同时保持 this 的当前值,可以使用 arr.slice(0, -1)。Array.prototype.pop() 可以有意地调用或应用于类似数组的对象。
对于不具有反映最终连续基于零的数字属性的 length 属性的对象,其行为可能毫无意义。
语法
pop() array.pop()
返回值
被删除的数组元素;如果数组为空,则为 undefined。
示例 3
在这个例子中,让我们了解如何使用 Array.pop() 函数从现有数组的末尾删除单个项目。
<!DOCTYPE html> <html> <title>Shift() vs pop() methods in JavaScript - TutorialsPoint</title> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body style="text-align:center"> <script> function myFunc() { var langArr = ['JavaScript', 'React JS', 'Angular', 'Tutorialspoint']; // You will see the last element will be popping from the array document.write(langArr.pop()); } myFunc(); </script> </body> </html>
示例 4
pop() 方法与 shift() 方法类似,它将从现有数组的开头删除一个数组、一个对象或两者。在这个例子中,我们将从数组的末尾删除一个对象。
<!DOCTYPE html> <html> <title>Shift() vs pop() methods in JavaScript - TutorialsPoint</title> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body style="text-align:center"> <script> let sports = [ 'Football', ' Cycling',' Wrestling', ' Shooting',['Hockey',' Badminton'] ]; let result = sports.pop(); document.write(result +'<br>'); //output: {'H':'Hockey','B':'Badminton'} document.write(sports); //output: [ 'Football', 'Cycling','Wrestling', 'Shooting' ] </script> </body> </body> </html>
简而言之
可以使用 Array.shift() 方法快速删除任何数组的第一个元素。它修改起始数组的长度并返回被删除项的值。此方法可以使用任何数据类型数组。它通常在循环中使用以获得最佳结果。但是,在使用大型数组时必须小心,因为如果不了解方法执行的概念,它可能会显著降低程序的效率。
pop() 是使用数组的一种方法。它删除数组的最后一个元素,修改原始数组并返回已删除的元素。这是它的三个主要特征。pop() 方法可以多次使用,前提是数组至少有一个元素。否则,将会出现“undefined”错误。