push()在末尾添加元素、unshift()在开头插入元素,二者均修改原数组并返回新长度;push()时间复杂度o(1),unshift()为o(n),多参数按序插入,大数组慎用unshift()。

push() 和 unshift() 都是修改原数组、返回新长度的方法,核心区别在于添加位置和性能表现。
添加位置不同
push() 总是在数组末尾追加元素;unshift() 总是在数组开头插入元素。
- let arr = [2, 3]; arr.push(4); → [2, 3, 4]
- let arr = [2, 3]; arr.unshift(1); → [1, 2, 3]
都支持多参数,但语义一致
两个方法都可以一次添加多个值,顺序按传入顺序排列。
- arr.push(4, 5, 6) → 在末尾依次加入 4、5、6
- arr.unshift(-2, -1, 0) → 在开头依次加入 -2、-1、0
性能差异明显
push() 时间复杂度接近 O(1),效率高;unshift() 是 O(n),因为要为每个已有元素重新分配索引。
- 小数组(几十个元素)用 unshift() 影响不大
- 大数组(上万项)频繁调用 unshift() 可能拖慢页面响应
- 需要头部插入时,可考虑 [newItem, ...oldArray] 或 concat() 创建新数组替代
都改变原数组且返回长度
二者都不会生成新数组,而是直接修改原数组,并返回操作后数组的 length 值。
- let a = [1]; let len = a.push(2); // a 变成 [1, 2],len 是 2
- let b = [1]; let len = b.unshift(0); // b 变成 [0, 1],len 是 2
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











