js-slice 和 splice 的区别
2026/6/24 3:08:39 网站建设 项目流程

核心区别: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 方法

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询