JS字符串数组学习之测算给出标识符的所有发生区域

lxf2023-03-10 20:45:01

在其他回答《js怎么知道给定子串是不是存在》中,大家阐述了根据获得签串的在字符串数组的第一次或最后一次发生区域的方式。这次我们增加难度系数,看一下怎样获得签串的在字符串数组的所有发生部位。

大家在其他回答中了解到了应用indexOf()和lastIndexOf()函数公式可以获得签串的在第一次出现位置和方向最后一次发生部位;假如找不到该签串的,则回到-1。

然而这2个函数公式都可以接受可供选择的第二个主要参数start,值也只能是一个整数,表明从字符串数组里的什么位置开始搜索,取值是 0 ~ length-1。lastIndexOf()假如特定了start主要参数,即在一个字符串数组里的指定位置从后面往前检索。

利用这个可供选择的第二个主要参数start和for语句,我们就能测算给出签串的(包括一个或多个标识符)的所有发生部位。

最先看一下应用indexOf()是如何统计分析给出标识符在字符串数组的所有发生部位

var stringValue = "Lorem ipsum dolor sit amet, consectetur adipisicing elit";
var positions = new Array();
var pos = stringValue.indexOf("e");

while(pos > -1){
positions.push(pos);  //将会出现部位值赋二维数组
pos = stringValue.indexOf("e",pos   1);  //从给出标识符发生部位的后一位开始查找
}

console.log(positions);//"3,24,32,35,52"

剖析:先使用indexOf("e")获得第一次出现部位并传参给自变量pos;然后使用while语句根据循环调用indexOf(),不断将搜索起始点设为“pos 1”,从给出标识符发生部位pos的后一位开始查找,获得下一个发生部位;直至搜索不上,回到-1完毕。因而输出结果为:

JS字符串数组学习之测算给出标识符的所有发生区域

能够得知,给出标识符“e”在字符串数组stringValue中一个出现5次,由于字符串数组部位起起源于 0,而非 1,因此发生部位分别是3、24、32、35、52。

随后我们来看一下应用lastIndexOf()是如何统计分析给出标识符在字符串数组的所有发生部位

var stringValue = "Lorem ipsum dolor sit amet, consectetur adipisicing elit";
var positions = new Array();
var pos = stringValue.lastIndexOf("e");

while(pos > -1){
positions.push(pos);
pos = stringValue.lastIndexOf("e",pos - 1);
}
console.log(positions);//"3,24,32,35,52"

剖析:应用lastIndexOf()获得全部发生部位其实跟应用indexOf()类似,只不过是由于lastIndexOf()返回是最后一次的诞生部位,因此,每一次循环系统,我们都会将搜索的起始点设为“pos - 1”。

看一下输出结果:

JS字符串数组学习之测算给出标识符的所有发生区域

能够得知,获得过的给出标识符“e”在字符串数组stringValue中所有发生位置在倒序的,次序分别是:52、35、32、24、3。

好啦,就说到这儿了,有需求的能看:javascript高级教程

以上就是关于JS字符串数组学习之测算给出标识符的所有发生区域的具体内容,大量欢迎关注AdminJS其他类似文章!