数组操作方法 —— Splice()

1,951 阅读2分钟
官方描述

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']