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

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

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 Report

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 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!