# 前言
今天敲代码用到了数组切割,不改变原数组使用slice()
,在原数组基础上那就使用splice()
,这就是我的认知。
那么问题来了:突然发现两个参数,两个参数为负的情况?第二个参数是代表长度还是停止位置?说明我对这两个方法很模糊,使用的时候需要在控制台实验一下,或者查对应方法的用法。接下来我梳理一遍常用的四个方法,看完就清清楚楚了。
# 方法说明
# strsubstring()方法
# 定义:substring() 方法用于提取字符串中介于两个指定下标之间的字符。
# 用法:stringObject.substring(start,stop)
# 返回值:
一个新的字符串,该字符串值包含 stringObject 的一个子字符串,其内容是从 start 处到 stop-1 处的所有字符,其长度为 stop 减 start。
# 补充说明:
如果只有一个参数,就是开始位置到结束,如果开始位置大于长度会返回空字符串,开始位置小于0等于从0开始。如果有两个参数,你可以当做取两者间的字符串。substring() 方法返回的子串包括 start 处的字符,但不包括 stop 处的字符。如果参数 start 与 stop 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。如果 start 比 stop 大,那么该方法在提取子串之前会先交换这两个参数,而且该方法不改变原字符串。
# 实例:
# 小结
strsubstring
方法只能用于切割字符串,不能用来切割数组,不改变原字符串,返回切割后结果。
# substr()方法
# 定义:substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。
# 用法:stringObject.substr(start,length)
# 返回值:
一个新的字符串,包含从 stringObject 的 start(包括 start 所指的字符) 处开始的 length 个字符。如果没有指定 length,那么返回的字符串包含从 start 到 stringObject 的结尾的字符。
# 实例
# 小结
substr
方法和strsubstring
方法一样只能用于切割字符串,不能用来切割数组,不改变原字符串,返回切割后结果。不过substr
的第二位代表切割的长度,空则全部,第一位代表位置,区别在于可以为负数,负数为length+start,-1则是倒数第一个位置,而strsubstring
首位负数则可以表示成0。substr
的第二位为长度,为负则返回空字符串。
# slice()方法
# 定义:slice() 方法可从已有的数组中返回选定的元素。
# 用法:arrayObject.slice(start,end)
# 返回值:
返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。 可用于字符串,返回从 start 到 end (不包括该元素)的字符串。 该方法不会改变原数组(或字符串),您可使用负值从数组的尾部选取元素。
# 实例
# 小结
小结:slice
可以用于数组和字符串,我这里是这么理解slice
的,两个参数代表开始结束位置,如果为整数就代表位置,为负数可以先转成正数(length+负数),然后转化后,start>stop,那么为空数组或空字符。
# splice()方法
# 定义:splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
# 用法:arrayObject.slice(start,end)
# 返回值
返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。该方法会改变原始数组。该方法不能用于字符串。
# 实例
# 小结:
splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。请注意,splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改。 第一个参数代表位置,可以为负数,为负的话,可以转换成(length+start),第二个参数为数目,可以理解成长度,切割出来的长度,可为0,为负数等于0,没有则为之后。之后的参数为插入的该位置的值。返回出切割出来的数组,而原数组变化成不包含切割出来的数组(第三个参数存在的情况,原数组变为插值后的数组)。
# 小结
本文想理清四个方法的区别,比如charAt()
方法可返回指定位置的字符,在这就不说了。
下面我整理了一个表格才看看刚刚说了四个方法之前的区别
区别分析
方法名 | 用于字符串 | 用于数组 | 是否改变原对象 | 第一个参数 | 第二个参数 | 其余参数 | 注意点 |
---|---|---|---|---|---|---|---|
substring | 是 | 否 | 否 | start,负为0,只有一个参数则到结束 | stop,负为0 | 无 | |
substr | 是 | 否 | 否 | start,负为(length+start),只有一个参数则到结束 | length(c长度区别去stop,截止位置),负为0,<=0返回空 | 无 | |
slice | 是 | 是 | 否 | start,负为(length+start),只有一个参数则到结束 | stop,负为(length+stop),当转化后的stop<start,则返回空 | 无 | |
splice | 否 | 是 | 是 | start,负为(length+start),只有一个参数则到结束 | length,负为0,stop<=0,则返回空 | 插入值 | 有插入值原数组会变成切割后+插入值后组成的新数组 |
# 结束语
其实这四个方法没仔细了解前,对于它的参数含义还真有点模糊,比如第二个参数代表长度和stop,有点傻傻分不清,还有两个参数为负数的情况也是特别需要注意的,要是理清这两个点,我相信这几个方法就任你拿捏。
然后又是不要脸的求点赞!
求点赞!求点赞!求点赞!