关于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方法返回截取到底数组