splice是数组方法,以为截取数组并且改变原数组
第一个参数start(必须)
可以为正数和复数,若只有一个参数时:如果参数是正数的话,那么从这个数开始截取到这个数组的最后一位例如:
let arr=[1,2,3,4,5]
console.log(arr.splice(1) ) //返回的是截取的新数组([2,3,4,5])
console.log(arr) //[1]
如果参数是复数的话,那么从这个数开始截取到这个数组的最后一位例如:
let arr=[1,2,3,4,5]
console.log(arr.splice(-1) ) //返回的是截取的数组([5])
console.log(arr) //[2,3,4,5]
第二个参数deleteCount(可选)
为要截取数组的长度,若加上start大于数组长度的话则截取从start以后的所有元素
let arr=[1,2,3,4,5]
console.log(arr.splice(1,2) ) //返回的是截取的数组([2,3])
console.log(arr) //[1,4,5]
第三个参数和到第n个参数 item1,item2,item3…(可选)
为要插入的元素,从截取数据的地方插入第三个参数到第n个参数
let arr=[1,2,3,4,5]
console.log(arr.splice(1,2,4,4) ) //返回的是截取的数组([2,3])
console.log(arr) //[1,4,4,4,5]
返回值:返回的是截取的新数组;即使只截取一个元素,返回的也是一个数组;没截取元素,返回一个空数组
slice从原数组(切片)复制下来一段元素,组成新数组,返回的是这个新数组,不改变原数组
有两个参数,都是可选的
第一个参数start(可选)
如果未定义的话,默认为0,如果定义的话则为开始复制的索引到最后一个元素,如果定义的话有两种情况,第一种大于零:
let arr=[1,2,3,4,5]
console.log(arr.slice() ) //返回的是截取的数组([1,2,3,4,5])
console.log(arr.slice(2) ) //返回的是截取的数组([3,4,5])
console.log(arr) //[1,2,3,4,5]
第二种小于零,绝对值大于数组长度的话则复制整个数组:
let arr=[1,2,3,4,5]
console.log(arr.slice(-1) ) //返回的是截取的数组([5])
console.log(arr.slice(-6) ) //返回的是截取的数组([1,2,3,4,5])
console.log(arr) //[1,2,3,4,5]
可以使用的call()方法进行绑定Function.prototype,也可以使用[].slice.call(arguments)代替来减少绑定Array.prototype.slice.call。
let unboundSlice = Array.prototype.slice
let slice = Function.prototype.call.bind(unboundSlice)
function list() {
return slice(arguments)
}
let list1 = list(1, 2, 3) // [1, 2, 3]