js slice 与 splice的区别

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]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值