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

125
Vistas
Suma de enteros en una cadena

Aquí está mi código:

 function sumDigits(num) { var string = num.toString(); var result = 0; for (let i = 0; i < string.length; i++) { if (string[i] === '-') { var negative = Number(string[i + 1]) * -1 result = result + negative } else { result = result + Number(string[i]) } } return result; } console.log(sumDigits('-316'))

Cuando agrego -316 como argumento, mi resultado es 7. ¿Por qué no incluye -3 en la ecuación? Como FYI, todavía soy nuevo en la codificación, y no estoy seguro de que esta sea la ruta correcta a seguir. Todos los aportes son apreciados.

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

0

Aprende a depurar, console.log y debugger son tus amigos.

 function sumDigits(num) { var string = num.toString(); var result = 0; console.log("my string:", string); for (let i = 0; i < string.length; i++) { console.log("in loop", i, string[i]); if (string[i] === '-') { var negative = Number(string[i + 1]) * -1 console.log("in if ", result, "+", negative); result = result + negative console.log("updated result", result); } else { console.log("in else ", result, "+", Number(string[i])); result = result + Number(string[i]) console.log("updated result", result); } } console.log("final result", result); return result; } sumDigits(-317);

Mirando los resultados, puede ver que encuentra un negativo y obtiene el siguiente número. En la siguiente iteración, vuelve a leer ese mismo número. Entonces -3 + 3 es cero. Entonces lo cancelas. Tienes que saltarte el bucle por uno.

 function sumDigits(num) { var string = num.toString(); var result = 0; for (let i = 0; i < string.length; i++) { if (string[i] === '-') { var negative = Number(string[i + 1]) * -1 result = result + negative // bump i i++; } else { result = result + Number(string[i]) } } return result; } console.log(sumDigits(-317));

about 4 years ago · Juan Pablo Isaza Denunciar

0

  • Estoy comprobando si el número es mayor que 0 o menor que cero.
  • Luego, si el número es menor que cero, estoy fusionando el primer elemento de la matriz que será ( -digit ) digits[0] = digits[0] + digits[1]; . -entonces estoy eliminando el segundo elemento de la matriz de digits . digits.splice(1, 1);
  • Y al final, estoy recortando todos los dígitos usando forEach loop y devolviendo el total de los dígitos tontos al total .

 const digitsSum = (number) => { let total = 0; if (number < 0) { let digits = number.toString().split(''); digits[0] = digits[0] + digits[1]; digits.splice(1, 1); digits.forEach(digit => total += parseInt(digit)); console.log(total); return total; } else { let digits = number.toString().split(''); digits.forEach(digit => total += parseInt(digit)); console.log(total); return total; } } function calculateDigitSumLogic(number) { } digitsSum(-1203); digitsSum(1203); digitsSum(-201);

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