弄懂slice和splice的区别

2,864 阅读2分钟

在数组中

slice

  • 可以用来从数组中提取指定元素
  • 该方法不会改变原数组,而是将截取到的元素封装到一个新数组中返回 用法
    slice(start, end);

参数

标题描述
start可选。整数,指定从哪里开始选择(第一个元素的索引为 0)。使用负数从数组的末尾进行选择。如果省略,则类似于 "0"。
end可选。整数,指定结束选择的位置。如果省略,将选择从开始位置到数组末尾的所有元素。使用负数从数组末尾进行选择。\

列子

    [1,2,3].slice(-1); // [3]
    [1,2,3].slice(1,2); // [2]

注意:含头不含尾(包含start,不含end)

splice

  • 方法可以添加、删除、替换,并返回删除的项目。
  • 改变原数组 用法
    slice(start, end, item, ...);

参数

标题描述
start必需。整数,指定在什么位置添加/删除项目,使用负值指定从数组末尾开始的位置。
end可选。要删除的项目数。如果设置为 0,则不会删除任何项目。
item, ...可选。要添加到数组中的新项目。\

列子

    const arr = [1,2,3,4,5];
    arr.splice(1,2, 6, 8); // [2, 3]
    console.log(arr); // [1, 6, 8, 4, 5]

在字符串中

slice

  • 可提取字符串的某个部分,并以新的字符串返回被提取的部分。 用法
    slice(start, end);

参数

标题描述
start必须。 要抽取的片断的起始下标,第一个字符位置为 0。如果为负数,则从尾部开始截取。
end可选。 紧接着要截取的片段结尾的下标。若未指定此参数,则要提取的子串包括 start 到原字符串结尾的字符串。如果该参数是负数,那么它规定的是从字符串的尾部开始算起的位置。slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。\

列子

   "Hello world!".slice(1,5); //ello
   "Hello world!".slice(-2); // d!

splice

字符串没有此方法