• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

185
Views
¿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));

almost 3 years ago · Juan Pablo Isaza
1 answers
Answer question

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 😉

almost 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error