Array.slice() 截取子数组
最后更新:2026-09-09
Array.slice() 截取子数组
slice 按起止下标截取一段浅拷贝新数组(含头不含尾),支持负数下标(从末尾倒数)。原数组完全不变,是数组不可变操作的基石。
| 分类 | 数组 |
|---|---|
| ES 版本 | ES3(1999) |
📝 语法
const 新数组 = 数组.slice(起始下标, 结束下标);
⚙️ 参数
| start | 可选。起始下标(含),负数从末尾倒数;省略默认 0。 |
|---|---|
| end | 可选。结束下标(不含),负数从末尾倒数;省略默认到末尾。 |
返回值:浅拷贝的新数组。
是否修改原值:否(返回新值)
▶ 示例
编辑下方代码,点击运行,在输出面板查看结果:
运行结果:
[ '香蕉', '橙子' ]
[ '橙子', '葡萄', '西瓜' ]
[ '葡萄', '西瓜' ]
false
💡 提示 slice() 无参调用是复制数组的最简写法;浅拷贝意味着对象元素仍共享引用。
ℹ️ info slice 的负数下标规则同样适用于字符串的 slice——两个 API 行为一致,可以放心记忆。
🌐 浏览器支持
| 浏览器 | |||||
|---|---|---|---|---|---|
| Array.slice() | ✓ v1 | ✓ v12 | ✓ v1.5 | ✓ v3 | ✓ v10.5 |
| 所有现代浏览器均支持 | |||||
🏷️ 相关数组方法
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Qslice 和 splice 怎么区分?
Aslice 截取不改原数组;splice 原地增删改。记忆:字母 p 的 splice 是 powerful(会改数据)。
Qslice(1, 3) 包含下标 3 吗?
A不包含——end 是开区间,只取下标 1 和 2。取到末尾省略 end 即可。
Qslice 是深拷贝吗?
A是浅拷贝:嵌套数组/对象仍共享引用。需要深拷贝用 structuredClone(arr)。