js实现shift
实现数组的 shift 方法
JavaScript 中的 shift() 方法用于移除数组的第一个元素并返回该元素。以下是手动实现 shift 功能的几种方法:
方法一:使用循环和临时数组
创建一个新数组,将原数组除第一个元素外的所有元素复制到新数组中,并返回被移除的元素。
function customShift(arr) {
if (arr.length === 0) return undefined;
const firstElement = arr[0];
for (let i = 0; i < arr.length - 1; i++) {
arr[i] = arr[i + 1];
}
arr.length = arr.length - 1;
return firstElement;
}
方法二:使用 splice 方法
利用 splice 方法直接移除第一个元素。
function customShift(arr) {
return arr.splice(0, 1)[0];
}
方法三:使用扩展运算符和 slice
通过 slice 获取剩余元素,并重新赋值给原数组。
function customShift(arr) {
if (arr.length === 0) return undefined;
const firstElement = arr[0];
const restElements = arr.slice(1);
arr.length = 0;
arr.push(...restElements);
return firstElement;
}
方法四:使用 ES6 解构
通过解构赋值提取第一个元素和剩余元素。
function customShift(arr) {
if (arr.length === 0) return undefined;
const [firstElement, ...rest] = arr;
arr.length = 0;
arr.push(...rest);
return firstElement;
}
注意事项
- 所有方法都会修改原数组,与原生
shift行为一致。 - 空数组调用时应返回
undefined。 - 方法二最简单,但直接依赖
splice,可能不符合手动实现的初衷。 - 方法一效率较低,因为需要遍历整个数组。







