聊聊indexOf 引发的思考

191 阅读2分钟
indexOf() 在javaScript 中的定位:

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

stringObject.indexOf(searchvalue,fromindex)
参数描述
searchvalue必需。规定需检索的字符串值。
fromindex可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。

说明

该方法将从头到尾地检索字符串 stringObject,看它是否含有子串 searchvalue。开始检索的位置在字符串的 fromindex 处或字符串的开头(没有指定 fromindex 时)。如果找到一个 searchvalue,则返回 searchvalue 的第一次出现的位置。stringObject 中的字符位置是从 0 开始的。

注释:indexOf() 方法对大小写敏感!

注释:如果要检索的字符串值没有出现,则该方法返回 -1。

数组

一般在js中我们查找数组中元素的位置 也用的同样的方法

var arr = [1,2,3];console.log(arr.indexOf(1));//0console.log(arr.indexOf(2));//1

在数组中返回的是元素的下标,跟字符串类似。

indexOf()中使用严格=== 来判断是否相等

数字类型 没有indexOf() 方法,需要将数字转换为字符串。

-1.indexOf()    //Uncaught SyntaxError: identifier starts immediately after numeric literal

也可以给 数字类型增加 原型方法来实现,但是这种实现没有什么实际的意义;

Number.prototype.indexOf = function(){
return subnum  = this.toString().indexOf(arguments[0]);
}
var a = 12111;
console.log(a.indexOf(211)) //  1
console.log(a.indexOf("211")) //  1
但是这种写法 12111.indexOf("211") 依然会报错
这是因为Number 在识别'.'号时,因为点号是一个有效的数字字符,在运算时会将点号当做数字字面量的一部分,然后才是对对象属性访问运算符

所以以下的写法是生效的

console.log((10).indexOf('0')) // 1

console.log(12111..indexOf("211")) // 1

console.log(0.12111.indexOf("211")) //3

在java 语言中indexOf的作用 与上述内容也类似;在此就不多说;