slice()
slice可以接收两个参数:
- 第一个参数:截取数组的开始位置(数组下标)
- 第二个参数:截取数组的结束位置(可省略) slice方法不会改变原数组,会创建新的数组,新数组包含截取部分
let arr = [1, 2, 3, 4, 5]
let res = arr.slice(0, 2)
// 从数组下标为0的位置开始截取,到下标为2的位置结束,不包括下标为2的元素
// arr => [1, 2, 3, 4, 5]
// res => [1, 2]
如果第二个结束参数被省略,则 slice() 会切出数组的剩余部分。利用这个,可以实现一个数组的拷贝,并且新数组与原数组互不影响
let arr = [1, 2, 3, 4, 5]
let clone = arr.slice(0)
// arr => [1, 2, 3, 4, 5]
// clone => [1, 2, 3, 4, 5]
// arr[0] = 666
// arr => [666, 2, 3, 4, 5]
// clone => [1, 2, 3, 4, 5]
// clone[0] = 999
// arr => [1, 2, 3, 4, 5]
// clone => [999, 2, 3, 4, 5]
splice()
splice()参数:
- 第一个参数:定义新元素被添加的位置
- 第二个参数:定义应该删除多少个元素
- 其余参数:定义要添加的新元素 splice方法会改变原数组,返回一个包含删除项的新数组
let arr = [1, 2, 3, 4, 5]
let res = arr.splice(0, 3, '1', '2')
// 从下标为0的位置开始删除,到下标为3的位置停止,不包括下标为3的元素,'1','2'为要添加的新元素
// arr => [ '1', '2', 4, 5 ]
// res => [ 1, 2, 3 ]
如果单纯想删除某个位置的元素,可以如下操作:
let arr = [1, 2, 3, 4, 5]
let res = arr.splice(0, 1)
// arr => [2, 3, 4, 5]
重点区别
splice会改变原数组,slice不会改变原数组!