js中splice()和slice()方法有什么区别?
在JavaScript中,splice()
和 slice()
是两个经常用于操作数组的方法,但它们的功能和用途有明显的区别。
- splice() 方法
splice()
方法用于添加/删除数组中的元素。它接受至少两个参数:第一个参数定义了从哪个索引位置开始修改数组,第二个参数定义了要删除的元素数量。如果提供了更多的参数,那么这些参数将被添加到数组中,从指定的索引位置开始。
语法:
array.splice(index, howmany, item1, ....., itemX)
index
:必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。howmany
:必需。要删除的项目数量。如果设置为 0,则不会删除项目。item1, ..., itemX
:可选。向数组添加的新项目。
例如:
let fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2, 0, "Lemon", "Kiwi"); // 从索引2开始,删除0个元素,然后添加"Lemon"和"Kiwi"
console.log(fruits); // ["Banana", "Orange", "Lemon", "Kiwi", "Apple", "Mango"]
JAVASCRIPT 复制 全屏
- slice() 方法
slice()
方法用于提取数组的一部分,并返回一个新数组,原始数组不会被改变。它接受两个参数:第一个参数定义了从哪个索引位置开始提取,第二个参数(可选)定义了在哪个索引位置结束提取(但不包括该位置的元素)。
语法:
array.slice(begin, end)
begin
:可选。提取起始处的索引,从 0 开始。如果该参数是负数,表示从末尾开始算起的索引。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。end
:可选。提取结束处的索引(但不包含)。如果省略该参数,slice() 会一直提取到数组末尾。如果该参数是负数,表示从末尾开始算起的索引。
例如:
let fruits = ["Banana", "Orange", "Apple", "Mango"];
let citrus = fruits.slice(1, 3); // 从索引1开始(包括),到索引3结束(不包括)的子数组
console.log(citrus); // ["Orange", "Apple"]
总结:splice()
方法会改变原始数组,主要用于添加或删除元素;而 slice()
方法不会改变原始数组,主要用于提取数组的一部分。