Array.shift() 移除首个元素
最后更新:2026-09-09
Array.shift() 移除首个元素
shift 移除数组的第一个元素并返回它;空数组返回 undefined。与 unshift 组成队列(先进先出)操作。注意 shift 需要移动后面所有元素,大数组上性能差于 pop。
| 分类 | 数组 |
|---|---|
| ES 版本 | ES1(1997) |
📝 语法
const 被移除的元素 = 数组.shift();
返回值:被移除的首元素;空数组返回 undefined。
是否修改原值:是(原地修改)
▶ 示例
编辑下方代码,点击运行,在输出面板查看结果:
运行结果:
顾客1
2
undefined
⚠️ 警告 shift 是 O(n) 操作——每次移除首元素,后面全部元素要前移一位。高频场景考虑用链表或双端循环缓冲。
💡 提示 const [first, ...rest] = arr 是不污染原数组的取首元素写法。
🌐 浏览器支持
| 浏览器 | |||||
|---|---|---|---|---|---|
| Array.shift() | ✓ v1 | ✓ v12 | ✓ v1.5 | ✓ v3 | ✓ v10.5 |
| 所有现代浏览器均支持 | |||||
🏷️ 相关数组方法
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Qshift 和 pop 的性能差异?
Apop 是 O(1)(只动末尾);shift 是 O(n)(全部元素前移)。大数组频繁 shift 会成为瓶颈。
Qshift 和 slice(1) 的区别?
Ashift 修改原数组并返回被删元素;slice(1) 返回去掉首元素的新数组、原数组不变。
Q如何安全地循环消费队列?
Awhile (queue.length) { const item = queue.shift(); ... }——每次 shift 后 length 变化,循环条件会自动终止。