Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

137
Vistas
comprobador de URL con include()

Estoy tratando de hacer un verificador de URL con js, esta es la parte del código con la que tengo problemas:

 switch (true) { case document.location.pathname.includes("/account"): presenceData.details = "Viewing account..." break case document.location.pathname.includes("/mylist"): presenceData.details = "Viewing list..." break } }

la URL con la que estoy trabajando es {example.com}/account/profiles/mylist y cuando pruebo /mylist me sigue mostrando "Viewing account..." ¿qué puedo cambiar para que /account no interfiera con /mylist ?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

El problema aquí es que {example.com}/account/profiles/mylist contiene las cadenas "/account" y "/mylist" . Entonces, cuando golpea su primer caso, se hace una coincidencia y luego sale del break .

 let pathname = '/account/profiles/mylist'; switch (true) { case pathname.includes("/account"): console.log("Viewing account..."); break; case pathname.includes("/mylist"): console.log("Viewing list..."); break; }

Si sabe que /mylist siempre estará más abajo en la jerarquía, debajo de /account , podría simplemente cambiar el orden de los casos:

 let pathname = '/account/profiles/mylist'; switch (true) { case pathname.includes("/mylist"): console.log("Viewing list..."); break; case pathname.includes("/account"): console.log("Viewing account..."); break; }

De lo contrario, es posible que necesite un enfoque lógico más matizado, y es posible que desee evitar el uso de sentencias de switch a favor de las sentencias if / else , ya que hay algunas peculiaridades en un switch (específicamente, que una vez que se cumple un solo caso, todos los demás bloques de casos se interpretará como coincidente hasta que se break ).

EDITAR:

O, otra alternativa sería aprovechar endsWith con en su lugar:

 let pathname = '/account/profiles/mylist'; switch (true) { case pathname.endsWith("/account"): console.log("Viewing account..."); break; case pathname.endsWith("/mylist"): console.log("Viewing list..."); break; }

DIVULGACIÓN COMPLETA : mientras escribía esta edición , esqew publicó la misma solución .

about 4 years ago · Juan Pablo Isaza Denunciar

0

¿Por qué no usar endsWith() en su lugar...?

 switch (true) { case document.location.pathname.endsWith("/account"): presenceData.details = "Viewing account..." break case document.location.pathname.endsWith("/mylist"): presenceData.details = "Viewing list..." break } }

Tangencial, pero las declaraciones switch están (en mi opinión) desactualizadas y se vuelven difíciles de leer/mantener (considerando la necesidad de break todas las condiciones); además, su uso de switch (true) es un poco abusivo de lo que se supone que debe lograr un switch . Probablemente debería estar simplemente usando declaraciones if / else if de todos modos:

 if (document.location.pathname.endsWith("/account")) { presenceData.details = "Viewing account..."; } else (document.location.pathname.endsWith("/mylist")) { presenceData.details = "Viewing list..."; }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda