js splice 和 slice 的区别

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值