Tengo esta cadena https://pokeapi.co/api/v2/pokemon/6/
Me gustaría extraer el valor después de pokemon/ en este caso 6. Esto representa identificadores de Pokémon que podrían abarcar entre 1 -> N
Sé que esto es bastante trivial y me preguntaba una buena solución para futuras pruebas. Aquí está mi solución.
const foo= "https://pokeapi.co/api/v2/pokemon/6/" const result = foo.split('/') //[ 'https:', '', 'pokeapi.co', 'api', 'v2', 'pokemon', '6', '' ] const ids = result[6]Puede tomar el valor después del último / carácter así:
const pokemonID = foo.substring(foo.lastIndexOf("/") + 1) Usando String.lastIndexOf para obtener el índice final del carácter de barra diagonal, y luego usando String.substring con un solo argumento para analizar la parte de la cadena después de ese último / carácter. Agregamos 1 al lastIndexOf para omitir la barra inclinada final.
Para que esto funcione, debe colocar su barra diagonal final final (que de todos modos no hará nada) de su URL de solicitud.
Esto podría resumirse en una función de utilidad para obtener el último valor de cualquier URL, que es la mayor mejora con respecto al uso de un enfoque de división y búsqueda por índice.
Sin embargo, tenga cuidado, tomará el valor que sea después de la última barra. Usar la cadena https://pokeapi.co/api/v2/pokemon/6/pokedex devolvería pokedex .
Si está utilizando Angular, React, Vue, etc. con un enrutador integrado, habrá API específicas para el marco que pueden obtener el parámetro exacto que necesita, independientemente de la forma de la URL.
Debe usar la API de URL integrada para realizar la división correctamente por usted:
const url = new URL("https://pokeapi.co/api/v2/pokemon/6/");Luego puede obtener el nombre de la ruta y dividirlo:
const path = url.pathname.split("/"); Después de dividirlo, puede obtener el valor 6 accediendo al quinto elemento aquí:
const url = new URL("https://pokeapi.co/api/v2/pokemon/6/"); const path = url.pathname.split("/"); console.log(path[4]);también podrías hacer algo como:
url.split('pokemon/')[1].split('/')[0]