数组slice与splice方法区别

616 阅读1分钟

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不会改变原数组!