tospliced是es2023新增的不可变数组方法,不修改原数组,返回新数组,参数与splice一致,支持删除、插入、替换操作,具备原子性和函数式特性。
tospliced 方法本身就不会修改原数组,它是 splice 的安全替代版,返回一个新数组。
什么是 toSpliced?
ES2023 引入的 toSpliced 是数组的不可变方法,用于在指定位置添加或删除元素,同时保持原数组不变。它接受和 splice 相同的参数(起始索引、删除个数、插入项),但不改变调用它的数组。
基本用法示例
比如从索引 1 开始删掉 2 个元素,再插入 'x' 和 'y':
const arr = [1, 2, 3, 4, 5]; const newArr = arr.toSpliced(1, 2, 'x', 'y'); // newArr → [1, 'x', 'y', 4, 5] // arr 仍为 [1, 2, 3, 4, 5](完全没变)
常见操作对照
- 只删除:`arr.toSpliced(2, 1)` → 删除索引 2 处的 1 个元素
- 只插入:`arr.toSpliced(2, 0, 'a', 'b')` → 在索引 2 前插入两个值
- 替换(删+插):`arr.toSpliced(1, 2, 'new')` → 删 2 个,插 1 个
注意兼容性
目前主流浏览器(Chrome 115+、Firefox 117+、Safari 16.4+)已支持,但旧环境需 Polyfill 或用扩展运算符 + slice 模拟:
// 手动模拟 toSpliced(start, deleteCount, ...items)
const toSplicedPolyfill = (arr, start, deleteCount, ...items) => {
const before = arr.slice(0, start);
const after = arr.slice(start + deleteCount);
return [...before, ...items, ...after];
};
不复杂但容易忽略Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











