As of my Previous Question I figured out how i can replace multiple text in an array without calling .replace
function many times
const iconMap = {
"ico.Win10": '<i class="fab fa-windows"></i>',
"ico.Ubuntu": '<i class="fab fa-ubuntu"></i>',
"ico.Whatsapp": '<i class="fab fa-whatsapp"></i>',
"ico.Instagram": '<i class="fab fa-instagram"></i>',
"ico.Google": '<i class="fab fa-google"></i>',
"ico.Microsoft": '<i class="fab fa-microsoft"></i>',
"ico.Twitter": '<i class="fab fa-twitter"></i>',
"ico.Facebook": '<i class="fab fa-facebook"></i>',
}
var userText = "ico.Win10 + S";
var keysArray = userText.split("+").filter(e => String(e));
keysArray = $.map(keysArray, $.trim);
for (let i = 0; i < keysArray.length; i++) {
if (iconMap[keysArray[i]] != undefined) {
keysArray[i] = keysArray[i].replace(keysArray[i], iconMap[keysArray[i]])
}
}
console.log(keysArray)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
But if my userText
Variable changes to something like "ico.Win10 Windows + S";
I get output ["ico.Win10 Windows", "S"]
instead of ["<i class="fab fa-windows"></i> Windows", "S"]