Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

193
Vistas
¿Cómo eliminar un carácter de una cadena sin usar métodos nativos ni bucles en Javascript?

Necesito eliminar un carácter a la vez de una cadena, sin usar métodos nativos o bucles. He encontrado innumerables formas de hacer esto sin métodos nativos O sin bucles, pero parece que no puedo encontrar una manera de hacerlo sin ninguno de los dos. Pude encontrar una forma de usar la recursividad para evitar bucles, pero no estoy seguro de cómo no usar el método string.slice(). Debo usar la recursividad. No, esto no es un problema de tarea, solo estoy practicando para una entrevista.

Se supone que la función cuenta cuántas veces se repite el carácter de destino (si es que se repite) en una cadena de entrada.

 const countChar = (input, target) => { if (input === '') return 0; if (input[0] === target) return 1 + countChar(input.slice(1), target); return countChar(input.slice(1), target); } console.log(countChar('hello world', 'o')); // 2 console.log(countChar('javascript', 'j')); // 1

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Lo principal para lo que su código actual está usando .slice() es para "recortar" su cadena para que en la próxima llamada recursiva, el primer carácter de su input sea el siguiente carácter que necesita verificar. En su lugar, puede pasar el índice del carácter actual que desea verificar, lo que le permite evitar la llamada de slice :

 const countChar = (input, target, i = 0) => { if (i >= input.length) return 0; if (input[i] === target) return 1 + countChar(input, target, i+1); return countChar(input, target, i+1); } console.log(countChar('hello world', 'o')); // 2 console.log(countChar('javascript', 'j')); // 1

Por supuesto, existen otros métodos además de .slice() que podría usar para dividir su cadena, pero estos aún implican "bucle"/iterar su cadena debajo del capó. Un ejemplo es desestructurar:

 const countChar = ([c, ...rest], target) => c ? (c === target) + countChar(rest, target) : 0; console.log(countChar('hello world', 'o')); // 2 console.log(countChar('javascript', 'j')); // 1 console.log(countChar('', 'j')); // 0

El fragmento anterior utiliza la asignación de desestructuración [c, ...rest] para extraer el primer carácter (almacenado en c ) del primer argumento pasado a su función. El ...rest toma todos los caracteres de la cadena pasada (excluyendo el primer carácter extraído) y los almacena en la variable rest .

¿El operador condicional ? : se usa para verificar si la variable c tiene un valor real (es decir, un carácter válido). c tendrá un valor falso ( undefined en nuestro caso) cuando countChar() se le pase una cadena vacía. Si c es veraz, entonces contiene un valor de carácter válido, por lo que el resultado de (c === target) + countChar(rest, target) se usa como el valor de retorno de la llamada a la función.

Aquí (c === target) se evaluará como true o false , que cuando se usa con + countChar(rest, target) convierte el valor booleano en un valor numérico, 1 si es true o 0 si es false . El : 0; significa que 0 se utiliza como valor de retorno cuando c es un valor falso (es decir, no quedan más caracteres para comprobar).

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda