4 formas de invertir una cadena en JavaScript

Escribir una función para invertir una cadena es una de las preguntas más frecuentes en una entrevista de JavaScript, especialmente si es un ingeniero de software junior. El entrevistador puede pedirle que escriba una función de cadena inversa de diferentes maneras, como usar bucle for, usar recursividad o sin usar métodos integrados, etc.

En este tutorial, discutiremos 4 formas diferentes de invertir una cadena en JavaScript.

1. Métodos integrados de JavaScript

La mejor manera de invertir una cadena es usando tres métodos integrados de JavaScript diferentes:split() , reverse() y join() .

  • split() - Divide una cadena en una matriz de subcadenas usando un separador y devuelve la nueva matriz.
  • reverse() - Este método invierte el orden de los elementos en una matriz. El primer elemento se convierte en el último y el elemento se convierte en el primero.
  • join() - Une todos los elementos de una matriz en una cadena y devuelve la nueva cadena.
const reverseString = (str) => {
    return str.split('').reverse().join('');
};

reverseString('hello world!');
// => !dlrow olleh

2. para bucle

Invertir una cadena usando bucle for Puede parecer un enfoque ingenuo, pero funciona bien. Podemos usar un ciclo decreciente (o incluso incremental) para iterar sobre cada carácter de la cadena y crear una nueva cadena invertida:

const reverseString = (str) => {
    let reversed = '';
    for (let i = str.length - 1; i >= 0; i--) {
        reversed += str[i];
    }
    return reversed;
};

reverseString('hello world!');
// => !dlrow olleh

Una sintaxis de bucle for moderna usando ES6 for... of :

const reverseString = (str) => {
    let reversed = '';
    for (const c of str) {
        reversed = c + reversed;
    }
    return reversed;
};

3. Recursividad

La recursividad es otra forma de invertir una cadena en JavaScript. Este enfoque implica dos funciones de JavaScript:substr() y charAt() . El primer método devuelve una subcadena de una cadena y el segundo método devuelve el carácter especificado de una cadena.

const reverseString = (str) => {
    return str ? reverseString(str.substr(1)) + str[0] : str;
};

reverseString('hello world!');
// => !dlrow olleh

El número de veces que se llama a la función recursiva depende de la longitud de la cadena. Se volverá muy lento si la cuerda es muy larga. Así que esta no es una muy buena solución, pero sigue siendo una forma de resolver el desafío.

4. método reduce() para arreglos

Otro enfoque poco utilizado para invertir una cadena en JavaScript es usar reduce() función de matrices. Este método reduce la matriz a un solo valor. Dado que esta función funciona para matrices, primero debemos dividir la cadena en una matriz usando split() método.

const reverseString = (str) => {
    return str.split('').reduce((r, c)=> c + r, '');
};

reverseString('hello world!');
// => !dlrow olleh

Resumen

Hay toneladas de formas diferentes de invertir una cadena en JavaScript. En este tutorial, hemos discutido 4 enfoques diferentes para resolver el desafío de la cadena inversa:

  • Usar funciones JavaScript integradas como split() , reverse() y slice() . Es sencillo y quizás el mejor enfoque.
  • Usando bucle for para iterar sobre todos los caracteres de una cadena y crear una nueva cadena invertida.
  • Convierta recursivamente la cadena en una subcadena hasta alcanzar la cadena vacía y luego combínelas para formar una cadena invertida. Puede volverse muy lento si la cadena es grande.
  • Dividir la cadena en una matriz y luego reducir la matriz a un solo valor usando las matrices' reduce() función.

Si tiene alguna pregunta o desea compartir sus comentarios, no dude en enviarme un tweet en cualquier momento.

Codificación feliz 😍