JavaScript - devolver número de índices sin bucle, es posible?

 
Vista:

devolver número de índices sin bucle, es posible?

Publicado por Dani (6 intervenciones) el 05/07/2021 11:38:55
Buenas a todos.

Estoy intentando hacer un programa que me devuelva no solo el índice de la primera coincidencia de una expresión regular, si no de todas las coincidencias, eso si, sin poder utilizar un bucle.
He estado buscando y no lo he sabido encontrar, he probado varias maneras, incluso utilizando modificadores como la g y he llegado a pensar que no es posible.....
Alguien me puede ayudar, es posible?

Gracias de ante mano

Saludos.
1
2
3
4
5
6
7
8
9
10
11
12
13
<script>
        function buscar() {
 
 
        let palabra=document.getElementById("texto").value;
        let letra=document.getElementById("letra").value;
        let re= new RegExp(letra,"gi")
 
        console.log(palabra.search(re))
         }
 
 
    </script>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Gio
Val: 368
Bronce
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

devolver número de índices sin bucle, es posible?

Publicado por Gio (79 intervenciones) el 06/07/2021 01:52:15
Hola Dani, estoy casi seguro de que no se puede hacer lo que quieres sin hacer uso de bucles.

La mejor forma que se me ocurre para hacer un buscador haciendo uso de las expresiones regulares, es la siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script>
	function buscar(){
		let palabra=document.getElementById("texto").value;
		let letra=document.getElementById("letra").value;
 
		let re= new RegExp(letra,"gi");
 
		let l=palabra.match(re).length; //VEMOS CUANTAS COINCIDENCIAS PUEDEN SER ENCONTRADAS
		var pos=Array(l);               //DECLARAMOS NUESTRO ARRAY DE POSICIONES
 
		//GUARDAMOS EN NUSTRO ARRAY, LAS POSICIONES DONDE SE ENCUENTRA CADA COINCIDENCIA
			for(let i=0; i<l; i++){
				pos[i]=re.exec(palabra).index;
			}
 
		console.log(pos);
	}
</script>

Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar