Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

143
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda