查找数组中某个元素出现的所有下标

前言

前几天在工作中遇到一个需求,需要在一个url中截取第二个’/‘开始后面的字符,于是就需要获取到第二个’/‘的小标。如何在字符串中获取某个字符第n次出现的下标呢?用此文记录一下。

获取字符串中某字符第n次出现的下标

1
2
3
4
5
6
7
8
9
function find(str, cha, num) {
let index = str.indexOf(cha)
for (let i = 0;i < num; i ++) {
index = str.indexOf(cha, index+1) // 第二个参数为查找的起始位置
}
return index
}
var str = '-a-b--c-f'
console.log(find(str,'-', 2)) // 第三次出现的下标

查找数组中某个元素出现的所有下标

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function find(arr, cha) {
const indexArr = []
let index = arr.indexOf(cha)
// 第一种方法
// while (index !== -1) {
// indexArr.push(index)
// index = arr.indexOf(cha, index + 1)
// }

// 第二种方法
for (let i = 0; i < arr.length; i ++) {
if (index === -1) break // 如果找不到,跳出循环
indexArr.push(index)
index = arr.indexOf(cha, index + 1)

}
return indexArr
}
const arr = ["Banana","Orange","Apple","Mango","Banana","Orange","Apple"]
console.log(find(arr, 'Banana')) // [0, 4]
--本文结束感谢您的阅读--