推荐答案
splice() 和 slice() 都是 JavaScript 中用于操作数组的方法,但它们的功能和用法有显著区别:
splice():- 修改原数组:
splice()会直接修改调用它的原数组。 - 主要用于添加、删除或替换数组元素: 它接受多个参数,可以指定起始索引、删除元素的数量以及要插入的新元素。
- 返回值是被删除的元素组成的数组: 如果没有删除元素,则返回空数组。
- 修改原数组:
slice():- 不修改原数组:
slice()会创建一个原数组的浅拷贝,不会修改原数组本身。 - 主要用于提取数组的一部分: 它接受起始索引和结束索引(可选)作为参数,返回一个新的数组,包含原数组中指定索引范围的元素。
- 返回值是提取出的新数组: 不会改变原数组。
- 不修改原数组:
简而言之: splice() 修改原数组并用于删除/插入元素, slice() 不修改原数组并用于提取子数组。
本题详细解读
splice() 方法详解
splice() 方法的语法如下:
array.splice(start, deleteCount, item1, item2, ...)
start: 必需。指定修改开始位置的索引。deleteCount: 可选。整数,指定要删除的元素数量。如果设置为 0,则不删除任何元素。item1, item2, ...: 可选。要添加到数组的新元素。
示例:
// www.javascriptcn.com code example const arr = [1, 2, 3, 4, 5]; // 删除元素 const removed = arr.splice(1, 2); // 从索引 1 开始,删除 2 个元素 console.log(arr); // 输出: [1, 4, 5] console.log(removed); // 输出: [2, 3] // 添加元素 arr.splice(1, 0, 2, 3); // 从索引 1 开始,不删除,插入 2 和 3 console.log(arr); // 输出: [1, 2, 3, 4, 5] // 替换元素 arr.splice(2, 1, 'a'); // 从索引 2 开始,删除 1 个元素,替换为 'a' console.log(arr); // 输出: [1, 2, 'a', 4, 5]
slice() 方法详解
slice() 方法的语法如下:
array.slice(start, end)
start: 必需。指定提取开始位置的索引。end: 可选。指定提取结束位置的索引(不包括此索引的元素)。如果省略,则提取到数组末尾。
示例:
const arr = [1, 2, 3, 4, 5]; const sliced = arr.slice(1, 3); // 从索引 1 开始,到索引 3 结束 (不包含3) console.log(arr); // 输出: [1, 2, 3, 4, 5] (原数组未被修改) console.log(sliced); // 输出: [2, 3] const slicedToEnd = arr.slice(2); // 从索引 2 开始提取到末尾 console.log(slicedToEnd); // 输出: [3, 4, 5]
总结:
| 特性 | splice() |
slice() |
|---|---|---|
| 修改原数组 | 是 | 否 |
| 主要用途 | 删除、插入、替换元素 | 提取子数组 |
| 返回值 | 被删除元素组成的数组 | 提取出的新数组 |