JavaScript 数组方法:变更原数组与不变更原数组的区别
在 JavaScript 中,数组是非常常见且重要的数据结构。作为开发者,我们常常需要使用数组方法来处理数组数据。但是,数组的不同方法会以不同的方式影响原数组,它们可以分为变更原数组的方法和不变更原数组的方法。本文将详细探讨 JavaScript 中常见的数组方法,分析它们是如何工作的,并重点讨论哪些方法会修改原数组,哪些方法不会。
一、变更原数组的方法
这些方法会直接对数组本身进行修改,改变其元素、长度或结构。
1. push()
push()
方法将一个或多个元素添加到数组的末尾,并返回数组的新长度。
-
示例:
let arr = [1, 2, 3]; arr.push(4); console.log(arr); // [1, 2, 3, 4]
-
原理:
push()
会直接修改原数组。在其内部,它会将新的元素添加到数组的末尾,并更新数组的长度。其基本实现如下:
Array.prototype.push = function (...args) { let len = this.length; for (let i = 0; i < args.length; i++) { this[len + i] = args[i]; } return this.length; };
2. pop()
pop()
方法删除数组的最后一个元素,并返回被删除的元素。
-
示例:
let arr = [1, 2, 3]; let removedElement = arr.pop(); console.log(arr); // [1, 2] console.log(removedElement); // 3
-
原理:
pop()
会修改数组并返回最后一个元素。其实现方式:
Array.prototype.pop = function () { let len = this.length; if (len === 0) return undefined; let removedElement = this[len - 1]; this.length = len - 1; return removedElement; };
3. shift()
shift()
方法从数组的开头删除一个元素,并返回该元素。
-
示例:
let arr = [1, 2, 3]; let removedElement = arr.shift(); console.log(arr); // [2, 3] console.log(removedElement); // 1
-
原理:
shift()
删除数组的第一个元素,并且其他元素会向左移动。其实现方式:
Array.prototype.shift = function () { let len = this.length; if (len === 0) return undefined; let removedElement = this[0]; for (let i = 0; i < len - 1; i++) { this[i] = this[i + 1]; } this.length = len - 1; return removedElement; };
4. unshift()
unshift()
方法将一个或多个元素添加到数组的开头,并返回新数组的长度。
-
示例:
let arr = [1,