Splice和Slice引发的血案

498 2

一字千里,何况是在代码里:

生活中一字之差,意思能千差万别,在代码中差了一字,运行结果更是差之千里。

在项目中遇到了对数据进行Copy,实现浅拷贝想到了用Slice,但是却错写成了Splice,引发了一系列问题。

下面借花献佛,讲解一下slice和splice的区别:

slice(start,end):方法可从已有数组中返回选定的元素,返回一个新数组,包含从start到end(不包含该元素)的数组元素。

注意:该方法不会改变原数组,而是返回一个子数组,如果想删除数组中的一段元素,应该使用Array.splice()方法。

start参数:必须,规定从何处开始选取,如果为负数,规定从数组尾部算起的位置,-1是指最后一个元素。
end参数:可选(如果该参数没有指定,那么切分的数组包含从start倒数组结束的所有元素,如果这个参数为负数,那么规定是从数组尾部开始算起的元素)。

1
2
3
var arr = [1,2,3,4,5];
console.log(arr.slice(1));//[2,3,4,5] 选择序列号从1到最后的所有元素组成的新数组。
console.log(arr.slice(1,3))//[2,3] 不包含end,序列号为3的元素

splice():该方法向或者从数组中添加或者删除项目,返回被删除的项目。(该方法会改变原数组)

splice(index,howmany,item1,…itemX)

index参数:必须,整数,规定添加或者删除的位置,使用负数,从数组尾部规定位置。
howmany参数:必须,要删除的数量,如果为0,则不删除项目。
tem1,…itemX参数:可选,向数组添加的新项目。

1
2
3
var arr = [1,2,3,4,5];
console.log(arr.splice(2,1,"hello"));//[3] 返回的新数组
console.log(arr);//[1, 2, "hello", 4, 5] 改变了原数组

原文:https://blog.csdn.net/xiaoqingpang/article/details/79108005


关注公众号

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器