乐趣区

关于indexOf的发散思维

在发散思维前先介绍一下基本知识;

定义与用法:

indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。


这里基本用法大家一般都清楚,一般在实际工作中常与数组的方法合用来对数组进行一些操作。
例如:

var arr=['Mike','Chen Jie','Amy','Sarah'];
// 将 Amy 从数组中删除
arr.splice(arr.indexOf('Amy'),1)
// 将 Amy 替换为 Zhang Peng,并追加 Wu Yifan,Miss White
arr.splice(arr.indexOf('Amy'),1,'Zhang Peng','Wu Yifan','Miss White')

下面介绍一下第二个参数的用法,可指定在字符串中开始检索的位置,这个可以用来快速查找字符串中出现某个字母的位置及次数。
例如:

var str='what is your name? my name is Jhon.'
var positions=new Array();
// 初始化索引
var index=str.indexOf('m');
while(index>-1){positions.push(index);
    // 改变索引
    index=str.indexOf('m',index+1);
}
console.log(positions)
// [15, 19, 24]

这个例子主要是通过不断增加 str.indexOf 的初始查找的位置,从而遍历了整个字符串。
下面介绍一个 indexOf 的兄弟方法:

定义与用法

lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。
参数上差不多,这里不做太多介绍,lastIndexOf 和 indexOf 的区别就是 lastIndexOf 是从后往前查,可以用于检测字符串中某个字母的唯一性;

var str='hello world';
str.lastIndexOf('w')===str.indexOf('w')

这里如果结果为 true,并且不等于 - 1 的话可以验证字母的唯一性;

退出移动版