JavaScript 数组 push() 方法

JavaScript push() 语法

push() 是 JavaScript 数组的一个方法,它用于在数组的 “末尾” 添加一个或多个元素,并返回新数组的长度。

语法:

arr.push(value1, value2, ..., valueN)

说明:

value1、value2、...、valueN 可以是任意类型的值。

注意:

  • push() 方法是一个 “破坏性” 方法,它会改变原数组。
  • push() 方法是有返回值的,不过它的返回值并非添加后的数组,而是添加后的数组长度。

很多数据结构都有 “增删查改” 这 4 种操作,数组的相关方法如下表所示。

数组的 “增删查改” 方法
方法 说明
unshift() 在数组开头添加元素
shift() 在数组开头删除元素
push() 在数组结尾添加元素
pop() 在数组结尾删除元素

JavaScript push() 摘要

属于 JavaScript Array 对象
使用频率
修改原数组
官方文档 查看
MDN 查看

JavaScript push() 示例

接下来,我们通过几个简单的例子来讲解一下 JavaScript push() 方法是如何使用的。

示例 1:push() 添加一个元素

const arr = ["Python", "C++"];
const result = arr.push("Java");

console.log(arr);
console.log(result);

运行结果如下。

[ 'Python', 'C++', 'Java' ]
3

分析:

从这个例子可以看出,push() 方法会改变原数组,它返回的是添加后的数组长度。如果你不需要用到添加后的数组长度,也可以不使用变量来接收它的返回值,比如:

const arr = ["Python", "C++"];
arr.push("Java");
console.log(arr);

示例 2:push() 添加多个元素

const arr = ["Python", "C++"];
arr.push("Java", "Go");
console.log(arr);

运行结果如下。

[ 'Python', 'C++', 'Java', 'Go' ]

分析:

push() 方法可以一次性在数组末尾添加多个元素。

示例 3:push() 添加的元素是数组

const arr = ["Python", "C++"];
arr.push(["Java", "Go"]);
console.log(arr);

运行结果如下。

[ 'Python', 'C++', [ 'Java', 'Go' ] ]

分析:

当 push() 的参数是一个数组时,此时该数组会作为一个元素添加进去。

示例 4:push() 添加的元素是对象

const arr = ["Python", "C++"];
arr.push({name: "Jack", age: 20});
console.log(arr);

运行结果如下。

[ 'Python', 'C++', { name: 'Jack', age: 20 } ]

分析:

如果 push() 添加的值是一个对象,那么该对象同样会作为一个元素添加进去。

深入了解 push()

想要在数组末尾添加元素,除了 push() 方法,还有一个非常有用的方法——ES6 扩展运算符。

示例 5:ES6 扩展运算符

const arr = ["Python", "C++"];
const result = [...arr, "Java"];

console.log(arr);
console.log(result);

运行结果如下。

[ 'Python', 'C++' ]
[ 'Python', 'C++', 'Java' ]

分析:

在某些时候,ES6 扩展运算符会比 unshift()、shift()、push()、pop() 等方法更好用,因为它不会修改原数组。

示例 6:合并两个数组

const arr1 = [1, 2];
const arr2 = [3, 4];

arr1.push(...arr2);    // 等价于 arr1.push(3, 4)
console.log(arr1);

运行结果如下。

[1, 2, 3, 4]

分析:

如果想把数组 B 的所有元素添加到数组 A 的末尾,我们可以使用 push() 结合扩展运算符来实现。这种方式比 concat() 方法更加高效,因为 concat() 会创建新数组,而这里是在原数组 arr1 上直接修改。

上一篇: unshift()

下一篇: shift()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号