splice
会改变原数组的数据
1.splice(index) 一个值
let arr = [23,34,55,90]
let arr1 = arr.splice(2)
//会改变原数组,从arr索引为2的位置开始其后面的都删除,返回的是移除的所有元素所构成的新数组
//所以arr为[23,34],arr1为[55,90]
2.splice(index, length) 两个值
let arr = [23,34,55,90]
let arr1 = arr.splice(1,1)
//会改变原数组,从arr索引为1的位置开始删除1个值,返回的是移除的所有元素所构成的新数组
//所以arr为[23,55,90],arr1为[34]
3.splice(index, length, value) 三个值
value为插入的值
let arr = [23,34,55,90]
let arr1 = arr.splice(1,2,88)
//会改变原数组,从arr索引为1的位置开始删除2个值,删除的元素用88来代替,返回的是移除的所有元素所构成的新数组
//所以arr为[23,88,90],arr1为[34,55]
注:所以衍生出一个纯粹的插入元素方法
只要把length参数传为0即可,但注意插入的位置是在该索引的位置插入(或者说这个位置的前面插入),剩下元素往后移!
//有一个从小到大排序的数组,插入一个新的数据,保持原有的排序方式不变
//例:let arr = [2,5,6,9,12,34,56],要插入数字17
const insertItem = (val) => {
for(i = 0; i < arr.length; i++){
if(arr[i] > val){
arr.splice(i, 0, val)
break
}
}
}
insertItem(17)
//最终arr为[2,5,6,9,12,17,34,56]
总结
所以说splice可以指定位置移除元素、插入元素、替换元素,是一个万能的方法
arr.push(val) = arr.splice(-1, 0, val)