substring(),split(),splice(),slice()的区别与作用
文末有记忆方法!!!
-
substring()
该方法返回一个字符串在开始索引到结束索引之间的一个子集,或从开始索引直到字符串的末尾的一个子集。
str.substring(indexStart[, indexEnd])indexStart:需要截取的第一个索引
indexEnd:非必填,如果不填则从indexStart截取到最后;填了则截取到indexEnd之前的字符
substring提取从indexStart到indexEnd(不包括)之间的字符。特别地:- 如果
indexStart等于indexEnd,substring返回一个空字符串。 - 如果省略
indexEnd,substring提取字符一直到字符串末尾。 - 如果任一参数小于 0 或为
NaN,则被当作 0。 - 如果任一参数大于
stringName.length,则被当作stringName.length。 - 如果
indexStart大于indexEnd,则substring的执行效果就像两个参数调换了一样。
- 如果
-
split()
该方法是将字符串按照指定的符号分割成数组,与数组的join()方法相对应,返回一个分割后的数组。
str.split([separator[, limit]])separator:为用来分隔的符号
limit:整数,用来控制字符切割的步长
-
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。如果
deleteCount是0或者负数,则不会移除任何元素。在这种情况下,你应该至少指定一个新元素(请参见下文)。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"] - 负索引从数组末尾开始计算——如果
-
slice()
该方法返回一个新的数组对象,这一对象是一个由
start和end决定的原数组的浅拷贝(包括start,不包括end),其中start和end代表了数组元素的索引。原始数组不会被改变。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的会臭,影响原数组,另外一个则不会影响原数组。