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

134
Vistas
¿Qué alternativa se puede usar en lugar de las declaraciones if / else para hacer que el código funcione de la misma manera?

Estoy tratando de encontrar la manera de hacer que el código funcione de la misma manera que se muestra en el código a continuación usando los otros métodos para las declaraciones if/else. Alguien me puede ayudar con eso? Tengo muchas más ciudades y claramente esto no va a escalar.

 function getCityNameFromURL() { var curURL = "" + Request.ServerVariables("URL"); var returnCityName = ""; curURL = curURL.toLowerCase(); if (curURL.indexOf("/sgncp/") != -1 || curURL.indexOf("/mlgct/") != -1) returnCityName = "London"; if ( curURL.indexOf("/berlinplus/") != -1 || curURL.indexOf("/berlinadmin/") != -1 ) returnCityName = "Berlin"; else if ( curURL.indexOf("/tokyoplus/") != -1 || curURL.indexOf("/tokyoadmin/") != -1 ) returnCityName = "Tokyo"; else if ( curURL.indexOf("/parisplus/") != -1 || curURL.indexOf("/parisadmin/") != -1 ) returnCityName = "Paris"; return returnCityName; }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

¿Qué tal un código basado en una configuración más simple? Incluso podría mover la información del mapa de la ciudad a un recurso separado.

Esto permitiría actualizaciones más sencillas sin tener que escribir código adicional.

 function getCityNameFromURL() { var curURL = "" + Request.ServerVariables("URL"); curURL = curURL.toLowerCase(); var cityMappings = [ { code: '/sgncp/', city: 'London' }, { code: '/mlgct/', city: 'London' }, { code: '/berlinplus/', city: 'Berlin' }, { code: '/berlinadmin/', city: 'Berlin' }, { code: '/tokyoplus/', city: 'Tokyo' }, { code: '/tokyoadmin/', city: 'Tokyo' }, { code: '/parisplus/', city: 'Paris' }, { code: '/parisadmin/', city: 'Paris' } ]; return cityMappings .find(mapping => curURL.indexOf(mapping.code) >= 0) ?.city ?? ''; }

Tenga en cuenta también, el condicional nulo ?. al intentar acceder a la propiedad de la city en caso de que la URL no coincida con ninguna de ellas y devuelva una cadena vacía.

Versión con bucle for

Reemplace el código cityMappings.find con este

 for (let i = 0; i < cityMappings.length; i++){ const mapping = cityMappings[i]; if (curURL.indexOf(mapping.code) >= 0) return mapping.city; } // in case no match was found return an emtpy string. return '';
about 4 years ago · Juan Pablo Isaza Denunciar

0

Esta respuesta es muy similar a la ya dada por phuzi .

Esta respuesta también presenta un mapeo de la ciudad, pero de una manera algo diferente para reducir la duplicación de cadenas. También introduje una variable defaultCity para (posiblemente) mejorar la legibilidad del código.

 function getCityNameFromURL() { const curURL = ("" + Request.ServerVariables("URL")).toLowerCase(); const defaultCity = { name: "" }; const cities = [ { name: "London", patterns: ["/sgncp/", "/mlgct/" ] }, { name: "Berlin", patterns: ["/berlinplus/", "/berlinadmin/"] }, { name: "Tokyo", patterns: ["/tokyoplus/", "/tokyoadmin/" ] }, { name: "Paris", patterns: ["/parisplus/", "/parisadmin/" ] }, ]; const city = cities.find(({ patterns }) => ( patterns.some(pattern => curURL.includes(pattern)) )) || defaultCity; return city.name; }

O si prefieres un bucle for:

 for (const { name, patterns } of cities) { for (const pattern of patterns) { if (curURL.includes(pattern)) return name; } } return "";
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