javaScript中slice, substring,substr三者区别以及用法扩展

substr定义
substr() 方法可在字符串中抽取从 开始 下标开始的指定数目的字符。

提示: substr() 的参数指定的是子串的开始位置和长度,因此它可以替代 substring() 和 slice() 来使用。
在 IE 4 中,参数 start 的值无效。在这个 BUG 中,start 规定的是第 0 个字符的位置。在之后的版本中,此 BUG 已被修正。
ECMAscript 没有对该方法进行标准化,因此反对使用它。

注意: substr() 方法不会改变源字符串。
substring定义
substring() 方法用于提取字符串中介于两个指定下标之间的字符。
截取start(包括)到end(不包括)之间的字符串
允许参数为负数(最后一位为-1)
注意:以两个参数中较小一个作为起始位置,较大的参数作为结束位置
slice定义
slice(start, end) 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。
使用 start(包含) 和 end(不包含) 参数来指定字符串提取的部分。
字符串中第一个字符位置为 0, 第二个字符位置为 1, 以此类推。
提示: 如果是负数,则该参数规定的是从字符串的尾部开始算起的位置。也就是说,-1 指字符串的最后一个字符,-2 指倒数第二个字符,以此类推。
start的位置必须要在end之前,否则返回空。
substr与substring的区别与用法
首先,他们都接收两个参数,substr接收的则是起始位置和所要返回的字符串长度,而slice和substring接收的是起始位置和结束位置(不包括结束位置)。看下面例子:
var str ='welcome back';
console.log(str.substr(2,5)); //lcome
console.log(str.substring(2,5)); //lco
console.log(str.slice(2,5)); //lco
接着,当接收的参数是负数时,substr则仅仅是将第一个参数与字符串长度相加后的结果作为第一个参数;substring则干脆将负参数都直接转换为0;slice会将它字符串的长度与对应的负数相加,结果作为参数。代码如下:
var str ='welcome back';
console.log(str.substr(-3)); //ack
console.log(str.substring(-3)); //welcome back
console.log(str.slice(-3)); //ack

console.log(str.substr(3,-4)); //空字符串
console.log(str.substring(3,-4)); //wel
console.log(str.slice(3,-4)); //come
注意:IE对substr接收负值的处理有错,它会返回原始字符串。
扩展
类数组转数组:

原文地址:https://www.cnblogs.com/baidei/p/13497616.html