JavaScript indexOf方法完全解读

JavaScript 基础 - Array - indexOf()

一. 语法:arr.indexOf(searchElement[, ?fromIndex])

  • 参数:

    1. searchElement —— 要查找的元素

    2. ?fromIndex 可选参数 ——开始查找的位置。

  • 返回值:找到这个元素 ? 首个被找到的元素在数组中的索引位置 : -1

二. 注意事项:
  1. indexOf() 匹配到第一个全等的元素后直接返回索引,中断查找,也就是不返回所有的索引
 
 	[1,2,3,1,1,1].indexOf(1)// 0
  
  1. indexOf() 使用 ===判断两个元素(要查找的与数组中被查找的)是否相等;

	[1,2,3].indexOf(1)  // 0
	//  1(数组中被查找的) === 1(要查找的)  

  1. indexOf() 中不涉及深层查找;
[123,234,345].indexOf(1)  // -1
	// 不会在每个元素中继续执行indexOf,即不会再 123.indexOf(1)
  1. indexOf() 中不涉及隐式类型转换,且判断相等时是两个元素严格全等的;
['123','234','345'].indexOf(123) // -1
  1. indexOf()如果索引值传入负数(-n),就会从倒数第n个开始搜索
[1,2,3,1,1,1].indexOf(1,-7)// 0 n>arr.length  整个数组都将会被查询
[1,2,3,1,1,1].indexOf(1,-1)// 5 从最后一个元素开始搜索
[1,2,3,1,1,1].indexOf(1,-2)// 4 从倒数第二个元素开始搜索
  1. indexOf()如果索引值传入大于或等于数组长度,意味着不会在数组里查找,直接返回-1
[1,2,3,1,1,1].indexOf(1,6) // -1  6 == arr.length
[1,2,3,1,1,1].indexOf(1,7) // -1  7 > arr.length
  1. indexOf()无法搜索NaN
[1,'1',null,undefined,NaN].indexOf(null)
// 2
[1,'1',null,undefined,NaN].indexOf(undefined)
// 3
[1,'1',null,undefined,NaN].indexOf(NaN)
// -1
  1. indexOf()不区分-0+0
[-0,1].indexOf(+0)
 //0
  1. indexOf()在稀疏数组中无法搜索
[,,].indexOf(undefined) 
//-1

三. 应用

1. 找出指定元素出现的所有位置
/**
* @description: 找出指定元素出现的所有位置
* @param {any} ele
* @param {Array} arr
* @return {Array} newArr
*/ 
function searchAllELement(ele,arr){
  let newArr = []
  let idx = arr.indexOf(ele);
  while (idx != -1) {
    newArr.push(idx);
    idx = arr.indexOf(ele, idx + 1);
  }
  return newArr
}
console.log(searchAllELement('a',['a', 'b', 'a', 'c', 'a', 'd']))// [0, 2, 4]

参考:找出指定元素出现的所有位置

2. 判断一个元素是否在数组里,不在则更新数组或者进行其他操作
/**
* @description: 判断一个元素是否在数组里,不在则更新数组或者进行其他操作
* @param {any} key
* @param {Array} data
*/ 
function isUpdateList(data,key){
  data.indexOf(key)=== -1 ? pageReload() : console.log('cancel')
}
function pageReload(){
  console.log('update list')
}
isUpdateList(['123','234','345'],'123')
isUpdateList(['123','234','345'],'133')//

参考:判断一个元素是否在数组里,不在则更新数组


参考:
  1. MDN文档
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: JavaScript中的indexOf方法是用于查找数组中指定元素的位置的方法。如果数组中包含该元素,则返回该元素的索引;如果数组中不包含该元素,则返回-1。该方法的语法如下: ``` array.indexOf(searchElement[, fromIndex]) ``` 其中,array表示要进行搜索的数组;searchElement表示要查找的元素;fromIndex是一个可选参数,表示从数组的哪个索引开始查找。如果省略该参数,则默认从数组的第一个元素开始查找。 需要注意的是,indexOf方法在执行查找时是区分大小写的。如果要执行大小写不敏感的查找,可以使用toLowerCase()或toUpperCase()方法将数组中的所有元素都转换为小写或大写字母,然后再执行indexOf方法。 没错,您的理解是正确的。JavaScript中的`indexOf`方法用于查找数组中指定元素的位置,它返回该元素在数组中第一次出现的索引。如果数组中不包含该元素,则返回-1。 可以通过传递第二个参数`fromIndex`来指定从哪个索引开始查找元素。如果省略`fromIndex`参数,则`indexOf`方法默认从数组的第一个元素开始查找。 需要注意的是,`indexOf`方法在执行查找时是区分大小写的。如果需要执行大小写不敏感的查找,可以使用字符串的`toLowerCase()`或`toUpperCase()`方法将数组中的所有元素都转换为小写或大写字母,然后再执行`indexOf`方法JavaScript中的indexOf()方法用于在字符串中查找特定的子字符串,并返回它的索引位置。如果找不到该子字符串,则返回-1。 以下是使用indexOf()方法的语法: ``` str.indexOf(searchValue[, fromIndex]) ``` 其中,`str`是要搜索的字符串,`searchValue`是要查找的子字符串,`fromIndex`是可选参数,表示开始搜索的位置。如果省略`fromIndex`参数,则从字符串的开头开始搜索。 以下是一个示例: ``` let str = "Hello World!"; let index = str.indexOf("World"); console.log(index); // 输出 6 ``` 在上面的示例中,我们在字符串"Hello World!"中查找"World"子字符串,并返回其索引位置。由于"World"子字符串在字符串中的位置从第7个字符开始,因此indexOf()方法返回6。 ### 回答2: JavaScript中的indexOf方法是字符串对象的一个方法,用于查找一个字符串中特定字符或者子串的位置,并返回找到字符或子串的索引值。 该方法可以接收两个参数,第一个参数为要查找的字符或子串,第二个参数为可选参数,代表查找的起始位置。如果未指定第二个参数,默认从字符串的起始位置开始。 使用该方法可以轻松地判断一个字符串中是否包含某个字符或子串,并且可以获取到其所在的位置,方便我们在后续的处理中进行替换、截取等操作。 例如: ```javascript var str = "Hello World!"; console.log(str.indexOf("l")); // 2 console.log(str.indexOf("l", 3)); // 3 console.log(str.indexOf("Wor")); // 6 console.log(str.indexOf("wor")); // -1 ``` 在上面的例子中,第一个indexOf方法的返回值是2,代表字符串中第一个字母“l”的索引位置。第二个方法传入了第二个参数3,代表从第3个位置开始查找,因此返回值是3,代表字符串中第二个字母“l”的索引位置。第三个方法查找的是子串“Wor”的位置,返回值是6。第四个方法查找的是子串“wor”,由于字符串中不包含该子串,因此返回值是-1。 通过使用indexOf方法,我们可以更加方便地处理字符串,快速地查找和定位特定的字符或子串,帮助我们更好地编写JavaScript代码。 ### 回答3: JavaScript中的indexOf()方法是一个字符串的方法,可以用来查找一个字符或一个子串在字符串中第一次出现的位置。它接收一个参数,即要查找的字符或子串,返回它在原始字符串中第一次出现位置的索引值,如果没有找到,则返回-1。 语法: str.indexOf(searchValue[, fromIndex]) 其中,searchValue表示要查找的字符或子串,fromIndex表示从何处开始查找,默认为0。如果searchValue是一个空字符串,它将返回0。 需要注意的是,如果要查找的字符或子串是一个正则表达式,要先将其转换为字符串形式再使用indexOf()方法,否则可能会出现意外结果。 应用场景: 1. 查找一个字符串中是否包含某个字符或某个子串。 例如: ``` var str = 'Hello world!'; console.log(str.indexOf('o')); //输出4 console.log(str.indexOf('world')); //输出6 console.log(str.indexOf('goodbye')); //输出-1,因为原字符串中不存在该子串 ``` 2. 判断一个字符串是否以某个字符或某个子串开头或结尾。 例如: ``` var str = 'Hello world!'; console.log(str.indexOf('H')); //输出0 console.log(str.indexOf('o', 5)); //输出7,从索引5开始查找,找到第二个o的位置 console.log(str.indexOf('!', 5)); //输出-1,因为从索引5开始没有这个字符了 console.log(str.indexOf('Hello') === 0); //输出true,因为原字符串以'Hello'开头 console.log(str.indexOf('world!') === str.length - 'world!'.length); //输出true,因为原字符串以'world!'结尾 ``` 总结: indexOf()方法JavaScript中常用的字符串方法之一,可以用来查找一个字符或一个子串在字符串中第一次出现的位置。它的使用非常灵活,可以用来判断一个字符串是否包含某个字符或子串,是否以某个字符或子串开头或结尾等等。需要注意的是,如果要查找的是一个正则表达式,要先将其转换为字符串形式再使用indexOf()方法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值