JavaScript数组里的slice和splice

6,116 阅读1分钟
关于slice和splice,有些人会搞不清楚,查了一博客,自己做了验证,下面简单总结一下他们的用法和区别。


用法:

slice:截取数组 [start, end)   /*从start下标开始---end-1下标结束*/

splice:

参数(开始项的下标,剪切长度,剪切以后最后一位开始添加数据)

var arr = ['a', 'b', 'c', 'd'];

arr.splice(1, 2, 1,2,3,4,5) //arr变为['a', 1, 2, 3, 4, 5, 'd']

var arr = ['a', 'b', 'c', 'e'];

arr.splice(3, 0, 'd') //arr变为['a', 'b', 'c', 'd', 'e'];

arr.splice(-1,0,'d')同样可以实现,数组从后往前数下标从-1开始

区别:从用法里就能看到区别了,但是我觉得他们还有一个最主要的区别是slice方法不改变原数组,splice方法改变原数组。看代码

var arr = [];
arr[0]=1;
arr[1]=2;
arr[3]='abc';
arr[5]=true;
console.log(arr);  //[ 1, 2, <1 empty item>, 'abc', <1 empty item>, true ]
console.log(arr.slice(0,4)); //[ 1, 2, <1 empty item>, 'abc' ]
console.log(arr);  //[ 1, 2, <1 empty item>, 'abc', <1 empty item>, true ]
console.log(arr.splice(0,3, 3,4,5)); //[ 1, 2, <1 empty item> ]
console.log(arr)  //[ 3, 4, 5, 'abc', <1 empty item>, true ]

可以看出:slice方法不会改变原数组,slice方法返回新截取的数组

                   splice方法改变原数组,splice方法返回截取到底数组