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”错误。

更新于:2022年8月23日

2K+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告