关于splice、substr、substring、slice

525 阅读3分钟

1.splice
splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目
注意:该方法会改变原来的数组
示例:

let arr1 = ['red', 'blue', 'orange', 'pink']
// 删除从index为1开始的2个元素
console.log(arr1.splice(1, 2)) // ['blue', 'orange']
console.log(arr1) // ['red', 'pink']

let arr2 = ['red', 'blue', 'orange', 'pink']
// 在index为1的位置上插入yellow
console.log(arr2.splice(1, 0, 'yellow')) // []
console.log(arr2) // ['red', 'yellow', 'blue', 'orange', 'pink']

let arr3 = ['red', 'blue', 'orange', 'pink']
// 删除从index为1开始的1个元素,并用yellow来替代被删除的元素
console.log(arr3.splice(1, 1, 'yellow')) // ['blue']
console.log(arr3) // ['red', 'yellow', 'orange', 'pink']

2.substr
substr()用于字符串,接收的则是起始位置和所要返回的字符串长度,当接收的参数是负数时,substr()则仅仅是将第一个参数与字符串长度相加后的结果作为第一个参数
语法:stringObject.substr(start,length)
示例:

let str = 'hello world'
// 返回从index为2开始的3个字符
str.substr(2, 3) // llo

// 第二个参数length为负数时,会返回空字符串
str.substr(2, -3) // ''

// 第一个参数为负数时,第一个参数等于自己与字符串长度相加后的结果,如果该结果小于等于0,则会被当成0处理
console.log(str.substr(-12, 3)) // hel
console.log(str.substr(-5, 3)) // wor

// 如果只有一个参数,会返回从index为1之后的所有字符串
console.log(str.substr(1)) // ello world

3.substring
substring() 方法用于提取字符串中介于两个指定下标之间的字符。
语法:stringObject.substring(start,end)
注意:该方法不可接收负的参数,如果接收到的参数为负数,则会全部转化为0;另外,substring()会默认以较小的参数作为起始位置,较大的参数作为结束位置
示例:

let str = 'hello world'

// 返回[2,7)区间的字符串
console.log(str.substring(2, 7)) // llo w

// 只有一个参数的时候,返回[2, 正无穷]区间的字符串
console.log(str.substring(2)) // llo world

// 参数为负数的时候,当作0来处理
console.log(str.substring(-1, 2)) // he

// substring会默认以最小的参数作为起点,这里就相当于是返回[0, 2)区间的字符串
console.log(str.substring(2, -1)) // he

4.slice
slice() 方法不仅可以从字符串中选取字符,也可从已有的数组中返回选定的元素。
语法:arrayObject.slice(start,end) || stringObject.slice(start,end)
注意:当接收的参数是负数时,slice会将它字符串的长度与对应的负数相加,结果作为参数。
示例:

let str = 'hello world'
// 返回[2,7)区间的字符串
console.log(str.slice(2, 7)) // 'llo w'

// 只有一个参数的时候,返回[2, 正无穷]区间的字符串
console.log(str.slice(2)) // 'llo w'

// 当参数为负数的时候,slice会将负数与字符串的长度相加,结果作为参数,这里的参数就相当于-1+11=10
console.log(str.slice(-1)) // 'd'

// 这里的参数相当于(4, 8)
console.log(str.slice(-7, -3)) // 'o wo'

// 当开始参数>=结束参数时,返回空串
console.log(str.slice(1, 1)) // ''

// 当参数大于字符串长度的时候,返回空串
console.log(str.slice(12)) // ''

// 当参数为负数时,从字符串的倒数第10个数开始算起,这里就是返回[1, 正无穷]区间的字符
console.log(str.slice(-10)) // 'ello world'