我们对 JavaScript 中这些函数的工作原理已经相当熟悉了。所以,我打算根据自己的理解,为这些函数写出不可变(immutable)的实现版本。欢迎你在评论区留下你的建议、疑虑或是提问,我随时乐于更新这篇文章。
// 不可变版本的 pop 函数,移除数组最后一个元素
function pop(arr) {
let newArr = [...arr]; // 深拷贝一份原数组
newArr.length = arr.length - 1; // 将新数组长度减一
return newArr; // 返回新数组
}
// 不可变版本的 push 函数,向数组末尾添加一个或多个元素
function push(arr, ...item) {
const newArr = [...arr]; // 深拷贝一份原数组
if (item.length >= 1) { // 如果有元素要添加
for (let i = 0; i < item.length; i++) { // 遍历所有要添加的元素
newArr[newArr.length] = item[i]; // 添加到新数组的末尾
}
}
return newArr; // 返回新数组
}
// 不可变版本的 shift 函数,移除数组第一个元素
function shift(arr) {
let [a, ...b] = arr; // 解构赋值,忽略第一个元素,其余放入新数组
return b; // 返回新数组
}
// 不可变版本的 unshift 函数,向数组开头添加一个或多个元素
function unshift(arr, ...item) {
const newArr = []; // 创建一个空数组
if (item.length >= 1) { // 如果有元素要添加
for (let i = 0; i < item.length; i++) { // 遍历所有要添加的元素
newArr[i] = item[i]; // 添加到新数组的开头
}
}
newArr.push(...arr); // 将原数组的所有元素添加到新数组的末尾
return newArr; // 返回新数组
}
感谢阅读!希望这篇文章能让你有所收获!别忘了在评论区留下你的足迹哦!