推荐答案
splice()
和 slice()
都是 JavaScript 中用于操作数组的方法,但它们的功能和用法有显著区别:
splice()
:- 修改原数组:
splice()
会直接修改调用它的原数组。 - 主要用于添加、删除或替换数组元素: 它接受多个参数,可以指定起始索引、删除元素的数量以及要插入的新元素。
- 返回值是被删除的元素组成的数组: 如果没有删除元素,则返回空数组。
- 修改原数组:
slice()
:- 不修改原数组:
slice()
会创建一个原数组的浅拷贝,不会修改原数组本身。 - 主要用于提取数组的一部分: 它接受起始索引和结束索引(可选)作为参数,返回一个新的数组,包含原数组中指定索引范围的元素。
- 返回值是提取出的新数组: 不会改变原数组。
- 不修改原数组:
简而言之: splice()
修改原数组并用于删除/插入元素, slice()
不修改原数组并用于提取子数组。
本题详细解读
splice()
方法详解
splice()
方法的语法如下:
array.splice(start, deleteCount, item1, item2, ...)
start
: 必需。指定修改开始位置的索引。deleteCount
: 可选。整数,指定要删除的元素数量。如果设置为 0,则不删除任何元素。item1, item2, ...
: 可选。要添加到数组的新元素。
示例:
-- -------------------- ---- ------- ----- --- - --- -- -- -- --- -- ---- ----- ------- - ------------- --- -- --- - ----- - --- ----------------- -- --- --- -- -- --------------------- -- --- --- -- -- ---- ------------- -- -- --- -- --- - --------- - - - ----------------- -- --- --- -- -- -- -- -- ---- ------------- -- ----- -- --- - ----- - ------- --- ----------------- -- --- --- -- ---- -- --
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() |
---|---|---|
修改原数组 | 是 | 否 |
主要用途 | 删除、插入、替换元素 | 提取子数组 |
返回值 | 被删除元素组成的数组 | 提取出的新数组 |