一文搞懂 splice 函数
splice
会改变原数组的数据
1.splice(index) 一个值 ——>删除所有(指定位置之后的)
js
let arr = [23, 34, 55, 90];
let arr1 = arr.splice(2);
//会改变原数组,从arr索引为2的位置开始其后面的都删除,返回的是移除的所有元素所构成的新数组
//所以arr为[23,34],arr1为[55,90]
2.splice(index, length) 两个值 ——>删除指定个数(指定位置之后的)
js
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) 三个值 ——>更新/插入(删除指定个数,然后再插入)(删除 0 个的时候就是插入了)
value 为插入的值
js
let arr = [23, 34, 55, 90];
let arr1 = arr.splice(1, 2, 88);
//会改变原数组,从arr索引为1的位置开始删除2个值,删除的元素用88来代替,返回的是移除的所有元素所构成的新数组
//所以arr为[23,88,90],arr1为[34,55]
注:所以衍生出一个纯粹的插入元素方法(第二个参数为 0 的时候)
只要把 length 参数传为 0 即可,但注意插入的位置是在该索引的位置插入(或者说这个位置的前面插入),剩下元素往后移!
js
//有一个从小到大排序的数组,插入一个新的数据,保持原有的排序方式不变
//例: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 可以指定位置移除元素、插入元素、替换元素,是一个万能的方法
js
arr.push(val) = arr.splice(-1, 0, val)