JavaScript可用解构赋值配合Rest参数实现类似slice的效果:逗号跳过前n项,...rest收集剩余元素为新数组,如[, , ...rest] = [1,2,3,4,5]得rest=[3,4,5];Rest必须在末尾,不支持负索引或中间截取。

JavaScript中可以用解构赋值配合Rest参数轻松实现类似数组切片(slice)的效果,尤其适合提取前几项和剩余部分。
基本语法:跳过开头元素,收集剩余项
Rest参数(...)必须放在解构模式的最后,它会把剩余所有元素收集为一个新数组。例如:
const arr = [1, 2, 3, 4, 5]; const [, , ...rest] = arr; // 跳过前两项,rest = [3, 4, 5]
这里用逗号占位跳过索引0和1的元素,...rest 接收从索引2开始的所有项。
按需提取前N项 + 剩余部分
想取前2项并保留其余内容?可以显式命名前几项,再用Rest收集后面:
立即学习“Java免费学习笔记(深入)”;
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- const [a, b, ...rest] = [10, 20, 30, 40, 50]; → a=10, b=20, rest=[30,40,50]
- const [first, , , ...tail] = ['a','b','c','d','e']; → first='a', tail=['d','e'](跳过中间两项)
注意:解构不会修改原数组,rest生成的是浅拷贝的新数组。
模拟 slice(start) 的简洁写法
要等效于 arr.slice(3)(从索引3开始),只需跳过前3个位置:
const arr = ['x', 'y', 'z', 'a', 'b', 'c']; const [,, , ...fromIndex3] = arr; // fromIndex3 = ['a', 'b', 'c']
逗号数量 = 要跳过的元素个数;Rest参数自动承接后续全部。
注意事项和限制
- 不能在Rest前面再跟其他解构项(如 [...rest, last] ❌ 不合法)
- 如果数组长度不足,被跳过的项为 undefined,Rest结果为空数组 []
- 不支持负数索引(比如“倒数第二项”需先用 length 计算位置)
这种写法简洁、函数式风格强,适合配置提取、参数预处理等场景,但复杂切片(如 slice(2,4))仍推荐直接用原生 slice 方法。

















