Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

138
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!