substring/substr/slice/splice分不清的进来!

151 阅读1分钟

slice可操作数组和字符串,但substringsubstr只能操作字符串,splice只能操作数组

slice:v. 切,割

splice:v. 绞接

------------------------------------------------------------------------------------------------

slice:

slice( start , stop)表示截取从下标start(包括start元素)到下标stop(不包括stop元素)的之间的元素(下标从0开始算),并返回新数组/新字符串,并不修改原数组/原字符串。

let str = "012345"  //数组和字符串一样就不举例了
str.slice(1,3)    //"12"
str.slice(1,-1)    //"1234",-1表示最后第一个,-2表示最后第二个
str.slice(-1,2)    //""
str.slice(1)    //"12345"

splice:

splice( start, length, arg1,arg2...)表示从下标start处截取掉 length长度(包含start元素)的元素后,在 start处为原数组添加arg1,arg2...,并返回被截取掉的数组,splice会直接修改原数组

let arr = [0,1,2,3,4,5]
let newArr = arr.splice(1,4,8,8,8)
console.log(newArr)    //[1, 2, 3, 4]
console.log(arr)    //[0, 8, 8, 8, 5]

substring:

substring(start , stop)表示返回从start(包含start元素)开始到stop(不包含stop元素)处之间的新字符串,其长度为stop减 start。不修改原字符串

let str = "012345"
str.substring(1,3)    //"12"
str.substring(3,1)    //"12",stop>start会先交换这两个参数
str.substring(1,-3)    //"0",start,stop为负数的话会把负数转成0
str.substring(-1,3)    //"012"
str.substring(1,1)    //"" ,start===stop返回空字符串
str.substring(-1,0)    //""

substr:

substr(start , length)表示返回从 start开始(包含start)包含 length长度的新字符串,且不修改原字符串

let str = "012345"
str.substr(2)    //"2345"
str.substr(2,3)    //"234"
str.substr(-1,3)    //"5",start为负数时,start = str.length + start
str.substr(-5,3)    //"123"
str.substr(1,0)    //"",stop为0或负数时,返回空字符串
str.substr(1,-1)