Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

223
Visualizações
¿Cómo hago para que mi 'bucle for' devuelva los caracteres que estoy tratando de empujar?

Actualmente estoy aprendiendo los fundamentos de JavaScript, pero me doy cuenta de que hay lagunas definitivas en mi conocimiento. Recientemente comencé a intentar desafíos en Codewars cuando este problema se hizo mucho más evidente. Mi última lucha ha sido intentar que este 'bucle for' inserte caracteres en una serie de números para formatearlo como un número de teléfono. Tantas soluciones diferentes como he probado, ninguna de ellas realmente hace lo que estoy tratando de lograr. Cualquier ayuda para averiguar exactamente dónde me estoy equivocando aquí y qué agujeros hay en mi lógica sería apreciada. Mi mejor intento es este:

 const createPhoneNumber = (phoneNumber) => { let formattedNumber = []; formattedNumber.push(phoneNumber) for (let i = 0; i < formattedNumber.length; i++) { if (formattedNumber[i] === 0) { formattedNumber.push('(') } if (formattedNumber[i] === 2) { formattedNumber.push(')') } if (formattedNumber[i] === 5) { formattedNumber.push('-') } } return(formattedNumber.toString()); } console.log(createPhoneNumber(1234567890));

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Algunos comentarios:

  • Está insertando un elemento en la matriz formattedNumber.push(phoneNumber) y luego lo recorre, por lo que solo hay una iteración
  • En cambio, podría convertir el número en una cadena e iterar usando su longitud
  • La verificación formattedNumber[i] === 0 está comparando el valor con 0 (esta verificación falla y es por eso que su función devuelve el número de teléfono sin formato) pero desea comparar el índice , así que cámbielo a i === 0
  • Al final de la función, está usando toString() para volver a unir los caracteres, pero esto incluirá comas entre los valores, en su lugar use .join('')

 const createPhoneNumber = (phoneNumber) => { const phoneNumberStr = (phoneNumber).toString(); let formattedNumber = []; for (let i = 0; i < phoneNumberStr.length; i++) { if (i === 0) { formattedNumber.push('(') } if (i === 2) { formattedNumber.push(')') } if (i === 5) { formattedNumber.push('-') } formattedNumber.push(phoneNumberStr[i]); } return(formattedNumber.join('')); }; console.log(createPhoneNumber(1234567890))

Además, puede usar .reduce() para lograr lo mismo, es una función conveniente que itera a través de una matriz y pasa un valor de una iteración a la siguiente:

 const createPhoneNumber = (phoneNumber) => (phoneNumber).toString().split('').reduce((acc, char, i) => { let pre = ''; if (i == 0) { pre = '('; } if (i == 2) { pre = ')'; } if (i == 5) { pre = '-'; } return `${acc}${pre}${char}`; }, ''); console.log(createPhoneNumber(1234567890));

Por cierto, creo que su pregunta fue rechazada porque no proporcionó un resultado esperado o más detalles del error 😉

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda