slice() 和 splice()

slice()splice() 写几个常见开发场景的实用例子


✅ 一、slice() 应用示例(不会修改原数组)


🎯 1. 分页展示(每页显示 n 条)

js 复制代码
const data = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const page = 2;
const pageSize = 3;

const pageData = data.slice((page - 1) * pageSize, page * pageSize);
console.log(pageData); // [4, 5, 6]

🎯 2. 复制数组的一部分做备份

js 复制代码
const arr = ['A', 'B', 'C', 'D'];
const copy = arr.slice();  // 整个复制
copy.push('E');

console.log(arr);  // ['A', 'B', 'C', 'D']
console.log(copy); // ['A', 'B', 'C', 'D', 'E']

🎯 3. 获取最后 n 个元素

js 复制代码
const logs = [1, 2, 3, 4, 5];
const lastTwo = logs.slice(-2);  // 从末尾截取两个

console.log(lastTwo); // [4, 5]

✅ 二、splice() 应用示例(会修改原数组)


🎯 1. 删除数组中的指定元素

js 复制代码
const arr = ['A', 'B', 'C', 'D'];
const index = arr.indexOf('B');
if (index !== -1) {
  arr.splice(index, 1);  // 删除 1 个元素
}
console.log(arr); // ['A', 'C', 'D']

🎯 2. 插入新元素到指定位置

js 复制代码
const arr = ['A', 'C', 'D'];
arr.splice(1, 0, 'B');  // 在索引1插入 'B'

console.log(arr); // ['A', 'B', 'C', 'D']

🎯 3. 替换元素(编辑功能)

js 复制代码
const arr = ['A', 'B', 'C'];
arr.splice(1, 1, 'X'); // 删除1个,插入'X'(替换)

console.log(arr); // ['A', 'X', 'C']

🎯 4. 实现"撤销删除"功能

js 复制代码
const arr = ['A', 'B', 'C'];
const removed = arr.splice(1, 1); // 删除 'B'
console.log(arr);     // ['A', 'C']
console.log(removed); // ['B']

// 撤销
arr.splice(1, 0, removed[0]);
console.log(arr);     // ['A', 'B', 'C']

🧠 总结思路:

使用场景 用哪个?
不想动原数组,只是取一部分 slice()
要修改原数组,删除/插入/替换元素 splice()
相关推荐
showyoui20 天前
深入Go语言之slice:不只是动态数组
后端·golang·slice·切片
高 朗8 个月前
【GO基础学习】基础语法(2)切片slice
开发语言·学习·golang·slice
梦想画家9 个月前
快速解锁Rust Slice特性
开发语言·rust·slice
hope_wisdom9 个月前
C++网络编程之零拷贝技术
网络·网络编程·1024程序员节·mmap·零拷贝技术·sendfile·splice
吱吱喔喔1 年前
slice 截取
javascript·vue.js·slice
tekin1 年前
golang内置包里面的sort.Slice 切片排序函数使用示例
开发语言·后端·golang·go·排序·slice·go切片排序
tekin1 年前
golang中数组array和切片slice的区别
开发语言·后端·golang·数组·slice·array·切片
JCGKS1 年前
go|一道算法题引发的思考|slice底层剖析
算法·golang·源码·slice·切片复制·切片截取·切片扩容