slice是javascript数组的内置方法,用于不修改原数组地提取并返回新数组;支持正负索引、省略参数,默认包含start不包含end,常用于分页、浅拷贝和不可变操作。

slice 是 JavaScript 数组的内置方法,用于从原数组中“复制”一段连续的元素,生成一个新数组,不修改原数组。
基本用法:指定起始和结束位置
调用 arr.slice(start, end) 时,start 是开始索引(包含),end 是结束索引(不包含)。索引支持负数,表示从末尾倒数(如 -1 是最后一个元素)。
- 省略
end:截取到数组末尾,例如[1,2,3,4].slice(2)→[3,4] -
start超出范围(如大于数组长度):返回空数组,例如[1,2].slice(5)→[] -
start为负数:从后往前数,例如[1,2,3,4].slice(-2)→[3,4] -
end小于start或为负且绝对值过大:返回空数组
常见实用场景
常用于数据分页、提取表单字段、备份片段或实现不可变操作。
- 取前 N 项:
list.slice(0, N)(比list.splice(0, N)更安全,因不改原数组) - 去掉头尾:
arr.slice(1, -1)去掉第一个和最后一个元素 - 浅拷贝整个数组:
arr.slice()或[...arr]效果相同 - 配合解构取中间段:
const [a, b, ...middle] = arr; const rest = middle.slice(0, -1);
注意点:只做浅拷贝
slice 复制的是元素的引用。如果数组里存的是对象,新数组中的对象仍指向原对象,修改对象属性会影响原数组内容。
- 基础类型(数字、字符串):互不影响
- 引用类型(对象、数组):共用同一份内存,需深拷贝时用
structuredClone或其他方案 - 不会触发 setter/getter,也不处理稀疏数组的空位(空位会被保留为
undefined)
与 splice 的关键区别
别把 slice 和 splice 搞混:splice 会修改原数组并返回被删元素;slice 完全不改变原数组,只返回副本。
- 需要“读取片段不破坏原数据” → 用
slice - 需要“删除+插入+返回被删项” → 用
splice - 想截取并顺便清空原数组?不能直接靠
slice,得组合splice或重赋值
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











