推荐答案
测试一下
题目
4.2 shift和unshift操作 ................................ ................................ ................................ …
参考答案与知识点
参考答案
shift 和 unshift 是 JavaScript 数组的常用方法,均会改变原数组。
- shift() 用于移除数组的第一个元素,并返回该元素。若数组为空,返回 undefined。它会修改原数组长度,并将所有剩余元素向前移动一位,因此时间复杂度为 O(n)。
- unshift() 用于在数组开头添加一个或多个元素,并返回新的数组长度。它也会修改原数组,将已有元素向后移动,时间复杂度同样为 O(n)。
两者与 pop/push 对比:pop 和 push 操作数组末尾,时间复杂度为 O(1);而 shift 和 unshift 因需移动元素,性能较差,尤其在大数组上应谨慎使用。
常见考题陷阱:
1. 返回值易混淆:shift 返回被删除的元素(非数组),unshift 返回新长度(非数组)。
2. 参数传递:unshift 可接受多个参数,按原顺序插入到开头。
3. 与 splice 的关系:splice(0,1) 等效于 shift,splice(0,0,ele) 等效于 unshift。
4. 空数组操作:空数组调用 shift 返回 undefined,不改变数组;空数组调用 unshift 正常添加。
5. 稀疏数组:shift/unshift 会保持稀疏性,移动后空缺位置为 empty。
涉及知识点
- shift 删除并返回第一个元素
- unshift 在开头插入元素并返回新长度
- 两者均改变原数组,时间复杂度 O(n)
- 返回值陷阱:shift 返回元素,unshift 返回长度
- 性能对比:shift/unshift 比 pop/push 慢