tengo este codigo sencillo
string = "google windows ico.Win10 ubuntu ico.Microsoft" keysArray = string.split("+").filter(e => e); for (let i = 0; i < keysArray.length; i++) { keysArray[i] = keysArray[i].replace("ico.Win10", '<i class="fab fa-windows"></i>') keysArray[i] = keysArray[i].replace("ico.Apple", '<i class="fab fa-apple"></i>') keysArray[i] = keysArray[i].replace("ico.Android", '<i class="fab fa-android"></i>') keysArray[i] = keysArray[i].replace("ico.Linux", '<i class="fab fa-linux"></i>') keysArray[i] = keysArray[i].replace("ico.Ubuntu", '<i class="fab fa-ubuntu"></i>') keysArray[i] = keysArray[i].replace("ico.Unity", '<i class="fab fa-unity"></i>') keysArray[i] = keysArray[i].replace("ico.Snapchat", '<i class="fab fa-snapchat"></i>') keysArray[i] = keysArray[i].replace("ico.Whatsapp", '<i class="fab fa-whatsapp"></i>') keysArray[i] = keysArray[i].replace("ico.Instagram", '<i class="fab fa-instagram"></i>') keysArray[i] = keysArray[i].replace("ico.Google", '<i class="fab fa-google"></i>') keysArray[i] = keysArray[i].replace("ico.Microsoft", '<i class="fab fa-microsoft"></i>') } console.log(keysArray)Aquí estoy convirtiendo una cadena en una matriz y filtrando toda la cadena vacía. Luego, reemplazando el texto dentro de cada elemento de la matriz si el texto existe
Pero cuando hay muchos textos para reemplazar, entonces tengo que llamar a la función .replace miles de veces. ¿Hay alguna manera de hacer lo mismo de una manera corta y bien educada?
Sugiero una tabla de búsqueda
const icons = { "Win10": "fa-windows", "Apple": "fa-apple", "Android": "fa-android", "Linux": "fa-linux", "Ubuntu": "fa-ubuntu", "Unity": "fa-unity", "Snapchat": "fa-snapchat", "Whatsapp": "fa-whatsapp", "Instagram": "fa-instagram", "Google": "fa-google", "Microsoft": "fa-microsoft" } const string = "google windows ico.Win10 ubuntu ico.Microsoft" const keysArray = string .split(" ") .map(key => key.startsWith('ico.') ? `<i class="fab ${key.replace(key, icons[key.split(".")[1]])}"></i>` : key) .join(" "); console.log(keysArray)Si estamos ABSOLUTAMENTE SEGUROS de que las entradas coincidan con los íconos, ni siquiera necesitamos eso; aquí Win10 fallaría pero el resto funciona
const string = "google windows ico.Windows ubuntu ico.Microsoft" const keysArray = string .split(" ") .map(key => key.startsWith('ico.') ? `<i class="fab fa-${key.split(".")[1].toLowerCase()}"></i>` : key) .join(" "); console.log(keysArray)