1.slice ()对数组进行增删改
/**
* 1.如果只传一个参数,则返回指定位置开始到数组末尾所有的元素
* 2.如果传入两个参数,则返回起始位置和结束位置之间所有的元素,注:不包含结束位置
* 3.当参数为负数
* (1) 以数组最后一个元素下标为0,向左依次为-1,-2....
* (2) 或将负数加上该数组长度的值来替换该位置的数字
* 4.如果符号一致则应该遵循起始位置的下标小于结束位置的下标
*/
const arr = [1,2,3,4,5,6,7]
const arr1 = arr.slice(1)
console.log(arr1); // [ 2, 3, 4, 5, 6, 7 ]
const arr2 = arr.slice(1,5)
console.log(arr2); // [ 2, 3, 4, 5 ]
const arr3 = arr.slice(1,-3)
console.log(arr3); // [ 2, 3, 4 ]
const arr4 = arr.slice(-5,5)
console.log(arr4); // [ 3, 4, 5 ]
const arr5 = arr.slice(-1,-3)
console.log(arr5); // []
const arr6 = arr.slice(-3,-1)
console.log(arr6); // [5,6]
2.splice()对数组进行增删改
// 只传一个参数: 从指定位置开始,删除后面所有的元素,并返回删除的元素
const arr = [1,2,3,4,5,6,7]
const arr1 = arr.splice(1)
console.log(arr); // [ 1 ]
console.log(arr1); // [ 2, 3, 4, 5, 6, 7 ]
//如果只传一个参数(index)并且为负数则删除数组最后的-index个元素,并返回删除的元素
const arr = [1,2,3,4,5,6,7]
const arr1 = arr.splice(-3)
console.log(arr); // [ 1, 2, 3, 4 ]
console.log(arr); // [ 5, 6, 7 ]
// 传两个参数:splice(start,deleteCount),从指定位置开始,删除指定数量的元素,并返回删除的元素
const arr = [1,2,3,4,5,6,7]
const arr1 = arr.splice(0,3)
console.log(arr); // [ 4, 5, 6, 7 ]
console.log(arr1); // [ 1, 2, 3 ]
/**
* 传入三个及以上的参数:splice(start,deleteCount,item1,...,itemN)
* 1.start > 0
* (1) deleteCount = 0 : 在start位置前添加元素item,...,itemN
* (2) deleteCount > 0 : 在start位置前添加item,...,itemN,在start位置删除deleteCount个元素
* 2.start > 0
* (1) deleteCount = 0 : 在start+arr.length位置前添加item,...,itemN
* (2) deleteCount > 0 : 在start+arr.length位置前添加item,...,itemN,在start+arr.length位置删除deleteCount个元素
*/
// 1.1
const arr = [1, 2, 3, 4, 5, 6, 7];
const arr1 = arr.splice(2, 0, 8, 9); // arr[2]为3,在3前添加8,9
console.log(arr); // [1, 2, 8, 9, 3, 4, 5, 6, 7];
console.log(arr1); // []
// 1.2
const arr = [1, 2, 3, 4, 5, 6, 7];
const arr1 = arr.splice(2, 2, 8, 9); // arr[2]为3,在3前添加8,9,从3开始删除2个元素
console.log(arr); // [1, 2, 8, 9, 5, 6, 7];
console.log(arr1); // [3,4]
//2.1
const arr = [1, 2, 3, 4, 5, 6, 7];
const arr1 = arr.splice(-2, 0, 8, 9); // 数组长度为7,-2+7=5 ,arr[5]为6,在6前添加8,9
console.log(arr); // [1, 2, 3, 4, 5, 8, 9, 6, 7];
console.log(arr1); // []
//2.2
const arr = [1, 2, 3, 4, 5, 6, 7];
// 数组长度为7,-2+7=5 ,arr[5]为6,在6前添加8,9,从6开始删除后两个元素,并返回删除的元素
const arr1 = arr.splice(-2, 2, 8, 9);
console.log(arr); // [1, 2, 3, 4, 5, 8, 9];
console.log(arr1); // [6,7]