substring(),split(),splice(),slice()的区别与作用

139 阅读4分钟

substring(),split(),splice(),slice()的区别与作用

文末有记忆方法!!!
  1. substring()

    该方法返回一个字符串在开始索引到结束索引之间的一个子集,或从开始索引直到字符串的末尾的一个子集。

    str.substring(indexStart[, indexEnd])
    

    indexStart:需要截取的第一个索引

    indexEnd:非必填,如果不填则从indexStart截取到最后;填了则截取到indexEnd之前的字符

    substring 提取从 indexStartindexEnd(不包括)之间的字符。特别地:

    • 如果 indexStart 等于 indexEndsubstring 返回一个空字符串。
    • 如果省略 indexEndsubstring 提取字符一直到字符串末尾。
    • 如果任一参数小于 0 或为 NaN,则被当作 0。
    • 如果任一参数大于 stringName.length,则被当作 stringName.length
    • 如果 indexStart 大于 indexEnd,则 substring 的执行效果就像两个参数调换了一样。
  2. split()

    该方法是将字符串按照指定的符号分割成数组,与数组的join()方法相对应,返回一个分割后的数组。

    str.split([separator[, limit]])
    

    separator:为用来分隔的符号

    limit:整数,用来控制字符切割的步长

  3. splice()

    该方法通过移除或者替换已存在的元素和/或添加新元素就地改变一个数组的内容。会改变原数组,并且返回被删除的数组,常常用来做插入和删除元素的操作。

    splice(start)
    splice(start, deleteCount)
    splice(start, deleteCount, item1)
    splice(start, deleteCount, item1, item2, itemN)
    

    start:必填

    从 0 开始计算的索引,表示要开始改变数组的位置,它会被转换成整数

    • 负索引从数组末尾开始计算——如果 start < 0,使用 start + array.length
    • 如果 start < -array.length,使用 0
    • 如果 start >= array.length,则不会删除任何元素,但是该方法会表现为添加元素的函数,添加所提供的那些元素。
    • 如果 start 被省略了(即调用 splice() 时不传递参数),则不会删除任何元素。这与传递 undefined 不同,后者会被转换为 0

    deleteCount 可选

    一个整数,表示数组中要从 start 开始删除的元素数量。

    如果省略了 deleteCount,或者其值大于或等于由 start 指定的位置到数组末尾的元素数量,那么从 start 到数组末尾的所有元素将被删除。但是,如果你想要传递任何 itemN 参数,则应向 deleteCount 传递 Infinity 值,以删除 start 之后的所有元素,因为显式的 undefined转换0

    如果 deleteCount0 或者负数,则不会移除任何元素。在这种情况下,你应该至少指定一个新元素(请参见下文)。

    item1, …, itemN 可选

    start 开始要加入到数组中的元素。

    如果不指定任何元素,splice() 将只从数组中删除元素。

    //删除操作
    const myFish = ["angel", "clown", "drum", "mandarin", "sturgeon"];
    const removed = myFish.splice(3, 1);
    
    // 运算后的 myFish 是 ["angel", "clown", "drum", "sturgeon"]
    // removed 是 ["mandarin"]
    
    
    //插入操作
    const myFish = ["angel", "clown", "drum", "sturgeon"];
    const removed = myFish.splice(2, 1, "trumpet");
    
    // 运算后的 myFish 是 ["angel", "clown", "trumpet", "sturgeon"]
    // removed 是 ["drum"]
    
  4. slice()

    该方法返回一个新的数组对象,这一对象是一个由 startend 决定的原数组的浅拷贝(包括 start,不包括 end),其中 startend 代表了数组元素的索引。原始数组不会被改变。

    slice()
    slice(start)
    slice(start, end)
    

    start 可选

    提取起始处的索引(从 0 开始),会转换为整数

    • 如果索引是负数,则从数组末尾开始计算——如果 start < 0,则使用 start + array.length
    • 如果 start < -array.length 或者省略了 start,则使用 0
    • 如果 start >= array.length,则不提取任何元素。

    end 可选

    提取终止处的索引(从 0 开始),会转换为整数slice() 会提取到但不包括 end 的位置。

    • 如果索引是负数,则从数组末尾开始计算——如果 end < 0,则使用 end + array.length

    • 如果 end < -array.length,则使用 0

    • 如果 end >= array.length 或者省略了 end,则使用 array.length,提取所有元素直到末尾。

    • 如果 end 在规范化后小于或等于 start,则不提取任何元素。

      const fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
      const citrus = fruits.slice(1, 3);
      
      // fruits 包含 ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango']
      // citrus 包含 ['Orange','Lemon']
      

记忆方法

substring和split都是对字符串进行操作,splice()和slice()是对数组进行操作,且一个带p的会臭,影响原数组,另外一个则不会影响原数组。