js 中的 indexOf() 函数的基本使用

 indexOf() 方法返回在【数组】或【字符串】中可以找到一个给定元素的第一个索引,如果不存在,则返回 -1。

 一、定义和用法

indexOf() 方法可返回数组中某个指定的元素位置​​​​​​或可返回某个指定的字符串值在字符串中首次出现的位置,如果没有找到则返回 -1。

注意: indexOf() 方法区分大小写。

二、语法

// 字符串写法
string.indexOf(searchvalue,start)
// 数组写法
arr.indexOf(searchvalue,start)

 注意:返回值为要查找的数组或者字符串对应的索引下标,如果没有找到对应的值,返回的值是 -1

下面是示例

(1)数组写法

	var star = ["刘德华", "彭于晏", "星爷"]
	var result = star.indexOf("星爷")
	console.log(result) // 2
	var result2 = star.indexOf("任嘉伦");
	console.log(result2) // -1

(2)字符串写法

var str ="Hello world!"
console.log(str.indexOf("Hello"))  //0
console.log(str.indexOf("World") )  //-1
console.log(str.indexOf("world"))  //6
console.log(str.indexOf("o",4))  // 7

这个方法应用的场景还有很多,大家还可以根据此方法对照学习  lastIndexOf()  方法

JavaScript 中的 `indexOf` 方法是一种用于查找字符串或数组中特定元素首次出现位置的常用工具。以下是关于 `indexOf` 方法的详细用法指南。 ### 字符串中的 `indexOf` 在字符串中,`indexOf` 方法用于查找一个子字符串首次出现的位置。如果未找到该子字符串,则返回 `-1`。此方法接受两个参数:要查找的子字符串和可选的起始索引位置。例如: ```javascript let str = "JavaScript is awesome!"; console.log(str.indexOf("is")); // 输出: 11 ``` 在这个例子中,`"is"` 在字符串中的起始位置是索引 `11`。如果从索引 `12` 开始查找 `"is"`,则 `indexOf` 会返回 `-1`,因为 `"is"` 不会在索引 `12` 之后出现[^1]。 ### 数组中的 `indexOf` 对于数组,`indexOf` 方法同样用来查找指定元素的第一次出现的索引值。如果数组中不存在该元素,则返回 `-1`。它也支持两个参数:要查找的元素和可选的起始索引位置。例如: ```javascript let arr = [10, 20, 30, 40, 50]; console.log(arr.indexOf(30)); // 输出: 2 ``` 在这个例子中,数字 `30` 在数组中的索引位置是 `2`。需要注意的是,当使用 `indexOf` 查找 `NaN` 时,总是会得到 `-1`,因为在 JavaScript 中 `NaN !== NaN`[^3]。 ### 性能考虑 当使用 `indexOf` 进行查找时,特别是在大型数据集上,应该考虑到其性能特性。对于数组去重等操作,如果使用 `indexOf` 来检查元素是否已经存在于新数组中,这会导致时间复杂度达到 O(n²),因为每次调用 `indexOf` 都可能需要遍历整个数组。因此,在处理大数据量时,应考虑更高效的替代方案,如使用 `Set` 或者 `reduce` 结合 `includes` 方法[^3]。 ```javascript function uniqueByReduce(arr) { return arr.reduce((acc, cur) => acc.includes(cur) ? acc : [...acc, cur], []); } ``` 上述函数利用了 `reduce` 来创建一个没有重复项的新数组。这种方法虽然避免了直接嵌套循环,但内部的 `includes` 方法仍然导致了较高的时间复杂度[^3]。 综上所述,`indexOf` 是一个简单而直观的方法,适用于简单的查找任务,但在需要高性能的场景下,开发者应当谨慎使用或寻找其他优化策略。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

M_emory_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值