unshift() 和 shift() 是 javascript 中操作数组头部的原生方法,unshift() 在开头添加元素并返回新长度,shift() 删除并返回首个元素,二者均直接修改原数组。

unshift() 和 shift() 是 JavaScript 数组的原生方法,专门用于在数组**头部**(即索引为 0 的位置)添加或删除元素。它们会直接修改原数组,不是返回新数组的纯函数。
用 unshift() 在开头添加一个或多个元素
调用 unshift() 会在数组最前面插入一个或多个新元素,并返回操作后数组的新长度。
- 语法:
arr.unshift(item1, item2, ...) - 支持一次添加多个值,按传入顺序从左到右插入(第一个参数变成新索引 0)
- 原数组被修改,不生成新数组
例如:
let fruits = ['banana', 'orange'];fruits.unshift('apple', 'pear');
// fruits 变成 ['apple', 'pear', 'banana', 'orange']
// 返回值是 4(新长度)
用 shift() 删除并获取第一个元素
shift() 移除数组的第一个元素,并返回该被移除的值。如果数组为空,则返回 undefined。
- 语法:
arr.shift() - 只删一个,且总是删索引 0 的元素
- 后续所有元素索引自动前移一位
例如:
let colors = ['red', 'green', 'blue'];let first = colors.shift();
// first 是 'red'
// colors 变成 ['green', 'blue']
注意:它们都改变原数组,慎用于循环中
在 for 或 while 循环里边遍历边用 shift(),会导致跳过元素或提前结束——因为每次删除都会让后续元素前移,而循环索引照常递增。
- 想逐个清空数组?可用
while (arr.length) arr.shift(); - 想安全遍历并处理头元素?推荐用
while (arr.length)配合shift(),而不是 for 循环 - 需要不修改原数组?应先用
slice()或展开语法复制一份再操作
和 push/pop 对比:记住“头尾对应”
理解这四个方法的命名逻辑能减少混淆:
- unshift / shift → 操作**头部**(“shift”本意是“移位”,unshift 就是“反向移位”)
- push / pop → 操作**尾部**(push 进去,pop 出来)
- 返回值规律:push/unshift 返回**新长度**;pop/shift 返回**被删元素**
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











