在JavaScript中,splice() 和 slice() 都是用于处理数组的方法,但它们的功能和用途有着显著的区别。
slice()
slice() 方法用于返回数组的一个浅拷贝,从原始数组的start位置(包含)到end位置(不包含)之间的部分,原数组不会被修改。
-
语法:
array.slice([begin[, end]]) -
参数:
begin(可选):提取起始处的索引(从该索引处开始提取原数组元素),如果该值为负数,则表示从原数组的倒数第几个元素开始提取,如果省略该参数,则slice会从索引0开始。end(可选):在该索引处结束提取原数组元素(提取结束前的最后一个元素的索引),slice会提取到该索引但不包括该索引处的元素。如果该参数是负数,则它表示在原数组中的倒数位置。如果省略end,slice会一直提取到原数组末尾。
-
返回值:返回一个新数组,这个数组是一个由原数组中的指定开始到指定结束(不包括结束)之间的项组成的浅拷贝。
splice()
splice() 方法通过删除现有元素和/或添加新元素来更改一个数组的内容。
-
语法:
array.splice(start[, deleteCount[, item1[, item2[, ...]]]]) -
参数:
start:指定修改的开始位置(索引)。如果超出了数组的长度,则会从数组末尾开始添加内容;如果是负值,则表示从数组末尾开始的第几位(例如,-2表示数组倒数第二个元素)。deleteCount(可选):整数,表示要移除的数组元素的个数。如果deleteCount被省略了,或者其值大于等于start之后的元素总数,则从start后面的元素都将被删除。如果deleteCount是0或者负数,则不会移除元素。这种情况下,至少应添加一个新元素。item1, item2, ...(可选):要添加进数组的元素,从start位置开始。如果不指定,则splice()将只删除数组元素。
-
返回值:由被删除的元素组成的一个数组。如果只删除了一个元素,则返回只包含一个元素的数组。如果没有删除元素,则返回空数组。
总结
- 修改原数组:
splice()方法会修改原数组,而slice()不会。 - 返回值:
splice()返回被删除的元素组成的数组,而slice()返回的是原数组的一个浅拷贝。 - 用途:
splice()用于添加或删除数组中的元素,slice()用于提取数组的某个部分。