Tengo el siguiente código:
<!DOCTYPE html> <html> <body> <p id="demo"></p> <script> const input = 'hello world'; document.getElementById("demo").innerHTML = sortAlphabets(input); function sortAlphabets(input) { return input.split('').sort().join(''); }; </script> </body> </html> El resultado es: dehllloorw
Pero quiero cambiarlo para ordenar por posición de apariencia del personaje. El resultado debería ser: hellloowrd
¿Cómo puedo hacer eso?
Muy apreciado.
Gracias.
Puede usar una función de comparación con .sort y dentro de esa función puede usar input.indexOf para obtener el índice de la primera aparición del carácter en la cadena de entrada.
input.split('').sort((a,b) => input.indexOf(a)-input.indexOf(b)).join('')Si desea que se eliminen los espacios, simplemente use un filtro después de la división.
input.split('').filter(c=>c!==' ').sort((a,b) => input.indexOf(a)-input.indexOf(b)).join('')Necesita una función de clasificación personalizada, aquí se comparará por índice
const input = 'hello world'; let splited = input.split('').map(e => e.trim()); let sorted = splited.sort((a, b) => { return splited.indexOf(a) - splited.indexOf(b); }).join(''); console.log(sorted);