数组操作方法 —— Splice()

官方描述
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']

猜你喜欢

转载自blog.csdn.net/yingbbai/article/details/128905005