splice(下标,个数)是操作数组的方法,返回被删除的元素,操作后原数组会被改变
splice()只有1个参数时:
let arr = [1,2,3,4,5,6,7,8,9]
let arr1 = arr.splice(3)
//包含该下标元素,删除后面所有的
console.log(arr) //[1, 2, 3]
console.log(arr1) //[4, 5, 6, 7, 8, 9]
splice()有2个参数时:
let arr = [1,2,3,4,5,6,7,8,9]
let arr1 = arr.splice(1,3)
//(起始下标1,删除3个)
console.log(arr) //[1, 5, 6, 7, 8, 9]
console.log(arr1) //[2, 3, 4]
splice()有3个参数或多个时:
第3个及后面的参数都视为插入的元素
let arr = [1,2,3,4,5,6,7,8,9]
let arr1 = arr.splice(1,5,20)
//(起始下标1,删除5个,20插入到起始下标的位置)
console.log(arr) //[1, 20, 7, 8, 9]
console.log(arr1) //[2, 3, 4, 5, 6]
参数为负数:
如果第1个参数为负数,从右到左开始删除:
let arr = [1,2,3,4,5,6,7,8,9]
let arr1 = arr.splice(-2)
console.log(arr) //[1, 2, 3, 4, 5, 6, 7]
console.log(arr1) //[8, 9]
如果第2个参数为负数,视为0:
let arr = [1,2,3,4,5,6,7,8,9]
let arr1 = arr.splice(-2,-4)
console.log(arr) //[1, 2, 3, 4, 5, 6, 7]
console.log(arr1) //[]
slice(起始下标,结束下标)可以操作数组和字符串,不改变原数组或字符串,返回被截取的元素
slice()操作数组时:
slice()只有1个参数时:
let arr = [1,2,3,4,5,6,7,8,9]
let arr1 = arr.slice(3)
//包含该下标元素,删除后面所有的
console.log(arr) // [1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log(arr1) // [4, 5, 6, 7, 8, 9]
slice()有2个参数时:
let arr = [1,2,3,4,5,6,7,8,9]
let arr1 = arr.slice(3,6)
//(包含的起始下标,不包含的结束下标)
console.log(arr) // [1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log(arr1) // [4, 5, 6]
第3个或多个参数无效
参数为负数:
let arr = [1,2,3,4,5,6,7,8,9]
let arr1 = arr.slice(3,-2)
//(从左开始截取下标,负数从右开始截取下标)
console.log(arr) // [1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log(arr1) // [4, 5, 6, 7]
let arr = [1,2,3,4,5,6,7,8,9]
let arr1 = arr.slice(-4,-2)
//(负数从右开始截取下标,负数从右开始截取下标)
console.log(arr) // [1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log(arr1) // [6, 7]
如果第二个负数参数的位置超过第一个参数的位置,则返回 [ ]
let arr = [1,2,3,4,5,6,7,8,9]
let arr1 = arr.slice(3,-6)
console.log(arr) // [1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log(arr1) // []
slice()操作字符串时,参数情况和返回结果跟数组是一样的
let arr = 'abcdefghijklmn'
let arr1 = arr.slice(2,4)
console.log(arr) // abcdefghijklmn
console.log(arr1) // cd