js-slice 和 splice 的区别

📅 2026/6/24 3:08:43
js-slice 和 splice 的区别
核心区别slice不修改原数组splice会修改原数组。特性slice()splice()是否修改原数组❌ 不修改返回新数组✅ 修改原数组主要用途截取数组片段添加/删除/替换元素返回值截取出的新数组被删除的元素数组参数(start, end)(start, deleteCount, items...)end参数可选不包含结束索引无 end 参数1.slice()- 截取不改变原数组const arr [a, b, c, d, e] // 语法arr.slice(start, end) // 从索引1开始到索引3结束不包含3 const result arr.slice(1, 3) console.log(result) // [b, c] console.log(arr) // [a, b, c, d, e] ✅ 原数组不变 // 常用场景 arr.slice(0) // 浅拷贝整个数组 arr.slice(-2) // 从倒数第2个取到末尾 → [d, e] arr.slice(2) // 从索引2取到末尾 → [c, d, e]2.splice()- 添加/删除/替换改变原数组const arr [a, b, c, d, e] // 语法arr.splice(start, deleteCount, item1, item2, ...) // 场景1删除 const deleted arr.splice(1, 2) // 从索引1开始删除2个 console.log(deleted) // [b, c] console.log(arr) // [a, d, e] ⚠️ 原数组被修改 // 场景2添加deleteCount 0 const arr2 [a, b, c] arr2.splice(1, 0, x, y) console.log(arr2) // [a, x, y, b, c] // 场景3替换 const arr3 [a, b, c] arr3.splice(1, 1, x) // 从索引1开始删除1个添加x console.log(arr3) // [a, x, c] // 场景4删除所有从索引1开始 arr.splice(1) // 删除索引1及之后所有元素3. 常见使用场景// ✅ 想要获取子数组 → 用 slice不破坏原数据 const firstThree arr.slice(0, 3) // ✅ 想要删除某几个元素 → 用 splice arr.splice(2, 1) // 删除索引2的元素 // ✅ 想要在中间插入 → 用 splice arr.splice(2, 0, newItem) // ✅ 想要复制数组 → 用 slice const copy arr.slice()4. 字符串也有slice()但没有splice()const str hello str.slice(1, 3) // el ✅ 字符串可用 // str.splice() ❌ 字符串没有 splice 方法