splice改变原数组,slice不改变原数组
1、splice
向数组中添加/从数组中删除元素,然后返回被删除的元素
a.splice(start, howmany, item1, ..., itemX)
1.1 start
必需
规定添加/删除元素的位置(从下标start处开始)
使用负数可以从数组结尾处规定位置(从下标 -start开始)
1.2 howmany
必需
要删除的元素数量
如果为0,则不删除元素
1.3 item1…itemx
可选
向数组中添加新元素
let a = [0, 1, 2, 3, 4, 5]
a.splice(1, 2) // 删除[1]开始的两个元素 [1, 2]
console.log(a) //[ 0, 3, 4, 5 ]
a.splice(1, 0, 1, 2) // [1]开始添加1, 2
console.log(a) // [ 0, 1, 2, 3, 4, 5 ]
a.splice(1, 2, 6) // 删除[1]开始的2个元素,添加1个元素
console.log(a) // [ 0, 6, 3, 4, 5 ]
let a = [0, 1, 2, 3, 4, 5]
// 从结尾处规定位置时,5的下标可以看成-1, -0看成是数组末尾的空元素
a.splice(-3, 2) // 删除[-3]开始的2个元素
console.log(a) //[ 0, 1, 2, 5 ]
a.splice(-1, 0, 'a', 'b') //[-1]开始添加3,4
console.log(a) // [ 0, 1, 2, a, b, 5 ]
a.splice(-3, 2, 'c') //删除[-3]开始的2个元素,添加1个元素
console.log(a) //[ 0, 1, 2, c, 5 ]
2、slice
a.slice(start, end)
2.1 start
必需
规定从何处开始(从下标start处开始)
使用负数规定从数组尾部开始算起(从下标 -start处开始)
2.2 end
可选
规定从何处结束(到下标end前结束)
如果没有指定该参数,默认到数组结束
使用负数规定从数组尾部开始算起(到下标 -end前结束)
let a = [0, 1, 2, 3, 4, 5]
let b = []
b = a.slice(1, 3) // 从[1]开始,到[3]前
console.log(b) //[ 1, 2 ]
b = a.slice(1, -2) //从[1]开始,到[-2]前
// 负数可参考splice的负数情况,5是[-1],[-0]假设为数组末尾空元素
console.log(b) // [1, 2, 3]
let a = [0, 1, 2, 3, 4, 5]
let b = []
b = a.slice(-3, -1) // 从[-3]开始,到[-1]前
console.log(b) // [ 3, 4 ]
b = a.slice(-5, 3) //从倒数第5个元素开始,到第3个元素
console.log(b) //[ 1, 2 ]
3、总结
最玄学的就是从哪里开始到哪里结束
[]指下标
参考: https://www.w3school.com.cn/jsref/jsref_splice.asp
https://www.w3school.com.cn/jsref/jsref_slice_array.asp