Tengo una pantalla meteorológica con emojis ajustados por la declaración if/else, pero evidentemente hay un gran retraso ya que la complejidad es 27, ¿cómo reemplazo ese método con un reemplazo que reduzca la complejidad?
Algo nuevo en el mundo del front-end, cualquier ayuda es muy apreciada.
function drawWeather( d ) { var celcius = Math.round(parseFloat(d.main.temp)-273.15); var fahrenheit = Math.round(((parseFloat(d.main.temp)-273.15)*1.8)+32); var main_description = d.weather[0].main; var description = d.weather[0].description; var day_time = isDay() document.getElementById('location').innerHTML = d.name; if ( main_description === 'Clear' && day_time == true) { document.getElementById('temp').innerHTML = fahrenheit + '°' + ' ☀️'; } else if ( main_description === 'Clear' && day_time == false) { document.getElementById('temp').innerHTML = fahrenheit + '°' + ' 🌔'; } else if( main_description === 'Clouds' ) { document.getElementById('temp').innerHTML = fahrenheit + '°' + ' ☁️'; } else if( main_description === 'Drizzle' ) { document.getElementById('temp').innerHTML = fahrenheit + '°' + ' 🌦️'; } else if( main_description === 'Rain' ) { document.getElementById('temp').innerHTML = fahrenheit + '°' + ' 🌧️'; } else if( main_description === 'Thunderstorm' ) { document.getElementById('temp').innerHTML = fahrenheit + '°' + ' ⛈️'; } else if( main_description === 'Snow' ) { document.getElementById('temp').innerHTML = fahrenheit + '°' + ' ❄️'; } else if( main_description === 'Fog' ) { document.getElementById('temp').innerHTML = fahrenheit + '°' + ' 🌫️'; } else if( main_description === 'Mist' ) { document.getElementById('temp').innerHTML = fahrenheit + '°' + ' 🌫️'; } else if( main_description === 'Haze' ) { document.getElementById('temp').innerHTML = fahrenheit + '°' + ' 🌫️'; } else if( main_description === 'Tornado' ) { document.getElementById('temp').innerHTML = fahrenheit + '°' + ' 🌫️'; } else if( main_description === 'Dust' ) { document.getElementById('temp').innerHTML = fahrenheit + '°' + ' 🌫️'; } else { document.getElementById('temp').innerHTML = fahrenheit + '°'; } }Al menos muestra tu esfuerzo de que trabajas con el código pero no puedes encontrar la manera de hacerlo.
Publique un código formateado para mostrar su respeto con la comunidad
Este es un tema de "SECO - No te repitas" en programación. Puedes buscar con esa palabra clave y aprenderla.
El siguiente código es lo que puedo hacer pero no probado.
let data = [ { weather: 'Clear', icon_day: '☀️', icon_night: '🌔' }, { weather: 'Clouds', icon: '☁️' }, { weather: 'Drizzle', icon: '🌦️' }, { weather: 'Rain', icon: '🌧️' }, { weather: 'Thunderstorm', icon: '⛈️' }, { weather: 'Snow', icon: '❄️' }, { weather: 'Fog', icon: '🌫️' }, { weather: 'Mist', icon: '🌫️' }, { weather: 'Haze', icon: '🌫️' }, { weather: 'Tornado', icon: '🌫️' }, { weather: 'Dust', icon: '🌫️' } ] let icon = ''; data.forEach(element => { if (main_description === 'Clear') { icon = isDay() ? element.icon_day : element.icon_night } else if (main_description === element.weather) { icon = element.icon; } }); document.getElementById('temp').innerHTML = `${fahrenheit}° ${icon}`;