Lo que quiero es que si el número introducido por el usuario tiene más de un dígito, dichos dígitos se sumen, y que devuelva siempre una sola cifra.
Por ejemplo, si el usuario introduce 14
, devuelva 5
.
Otro ejemplo es que si el usuario escribe 87
, la suma debe ser 15
pero debe volver a sumarse y el resultado final sería 6
.
var numero=prompt("introduzca un número");
if(numero>=10){
}
else{
alert(numero);
}
Основанный на мой ответ на предыдущий вопрос :
var numero = parseInt(prompt("introduzca un número"));
while (numero >= 10) {
numero = numero.toString()
.split('')
.map(x => parseInt(x) )
.reduce( (x, y) => x + y);
}
alert(numero);
Идея состоит в том, чтобы делать одну funciГіn перекурсивная, ответ @Leandro был хорошо направлен, но ему не хватало точек фиксируй.
var cadena = prompt("Introduzca un número");
var numero = parseInt(cadena);
//Llamamos a la función recursiva
reduce(numero);
function reduce(num){
if(numero >= 10){
var suma = 0;
for (var c in cadena)
suma += parseInt(cadena[c]);
if(suma.toString().length > 1){
//Si sigue siendo de más de un dígito, reseteamos las variables e iniciamos de nuevo
numero = suma;
cadena = suma.toString();
reduce(suma);
}else{
alert(suma);
}
}
else{
alert(numero);
}
}
var numero = prompt("introduzca un número");
if (numero >= 10) {
var res = numero.split("");
var arrayLength = res.length;
numero = 0;
for (var i = 0; i < arrayLength; i++) {
var a = Number(res[i]);
numero = numero + a;
}
alert(numero);
} else {
alert(numero);
}
Это решает проблему складывания твоих чисел, но не решает тот факт, что ты всегда хотел ни одну цифру, например, если я размещаю 99, сумма закончилась бы 18.
PodrГ, - чтобы быть чем-то как это:
var cadena = prompt("introduzca un número");
var numero = parseInt(cadena);
if(numero >= 10){
var suma = 0;
for (var c in cadena)
suma += parseInt(cadena[c]);
alert(suma);
}
else
{
alert(numero);
}
, Если хотят, что это был один dГ-gito, только состоит cuestiГіn в том, чтобы использовать while
:
var numero = parseInt(prompt("introduzca un número"));
if(numero >= 10){
var suma = 0;
do{
suma = sumar(numero.toString());
numero = suma;
}while(suma >= 10);
alert(suma);
}
else
{
alert(numero);
}
function sumar(cadena){
var suma = 0;
for (var c in cadena)
suma += parseInt(cadena[c]);
return suma;
}
Мой ответ направлен, чтобы делать parse числа в параметре и использовать возврат как только было получено число, чтобы получать сумму всех Ваших цифр.
function sumarDigitos(numero) {
return numero == 0 ? numero : sumarDigitos(numero/10) + (numero%10);
}
var sumaNumero = parseInt(cadenaNumero);
Чтобы возвращать единственную цифру...
while (sumaNumero > 9) {
sumaNumero = sumarDigitos(sumaNumero)
}
Чтобы получать цепь единственная цифра...
var sumaCadena = sumaNumero.toString();
Эта serГ - в форму, основанную на тебе cГіdigo оригинал:
var numero = prompt("Introduzca un número");
var valorIntroducido = parseInt(numero);
if(valorIntroducido >= 10){ //más de 2 digítos.
var suma = 0;
for (var i in numero){
suma += parseInt(numero[i]);
}
alert("Resultado : " +suma);
}else{//1 digito
alert("Resultado (1 digíto): " +valorIntroducido);
}