官方描述
splice() 方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。
简单来说 ⭐⭐⭐
splice()方法可以实现 数组元素的 添加、删除、替换、截取,返回值为删除的元素组成的数组,没有元素被删除就返回一个空数组
arr.splice(start[, deleteCount[, item1,[ item2, item3...]]])
start:修改开始的位置(索引值计数,从0开始),可以为正,可以为负
deleteCount:整数,删除的元素个数,从start开始,为0或负数,不删除元素
item:要添加(替换)进数组的元素,从start开始
测试数据✒️
// 索引值: 0 1 2 3
// 索引值: -4 -3 -2 -1
let arr= ['tom','marry','larry','jack']
1️⃣ 截取
arr.splice(start)
let arr= ['tom','marry','larry','jack']
start > 0,从左向右找
arr.splice(2)
// 截取 索引值为2(不包括2)之前的元素,相当于删去 索引值为2(包括2)之后的元素
>>返回值 ['larry','jack']
>>arr ['tom','marry']
start < 0,从右向左找
arr.splice(-3)
// 截取 索引值为-3(不包括-3)之前的元素,相当于删去 索引值为-3(包括-3)之后的元素
>>返回值 ['marry','larry','jack']
>>arr ['tom']
2️⃣ 删除
arr.splice(start, deleteCount)
let arr= ['tom','marry','larry','jack']
start > 0,从左向右找
arr.splice(2, 1); // 删除 索引为2 的元素 'larry'(从左向右找)
>>返回值 ['larry']
>>arr ['tom','marry','jack']
start < 0,从右向左找
arr.splice(-4, 1); // 删除 索引为-4 的元素 'tom'(从右向左找)
>>返回值 ['tom']
>>arr ['marry','larry','jack']
deleteCount 为0或负数,不删除元素
3️⃣ 添加
arr.splice(start, deleteCount, item1, item2, ...)
let arr= ['tom','marry','larry','jack']
start 正负索引定位同理,往后就不做赘述了
arr.splice(2,0,'111') // 将'111'插在索引值为2的位置,原元素后移
>>返回值 []
>>arr ['tom','marry','111','larry','jack']
arr.splice(2,0,'111','222','333') // 将'111'插在索引值为2的位置,以此类推,原元素后移
>>返回值 []
>>arr ['tom','marry','111','222','333','larry','jack']
4️⃣ 替换
arr.splice(start, deleteCount, item1, item2, ...)
let arr= ['tom','marry','larry','jack']
arr.splice(2,1,'111') // 删1补1(将原索引值为2的位置的'larry'换为'111')
>>返回值 ['larry']
>>arr ['tom','marry','111','jack']
arr.splice(2,5,'1','2','3','4','5') // 删5补5(原数组不够5就删到结束(只删3个))
>>返回值 ['larry','jack']
>>arr ['tom','marry','1','2','3','4','5']
arr.splice(2,2,'111') // 删2补1
>>返回值 ['larry']
>>arr ['tom','marry','111']
arr.splice(2,1,'1','2','3') // 删1补3
>>返回值 ['larry']
>>arr ['tom','marry','1','2','3','jack']