2017-01-26 9 views
0

Может кто-нибудь объяснить, что я делаю неправильно в этой проблеме? Я хочу добавить сумму переменной num с использованием методов toString и Number. Сначала я ввожу num в строку num = '12345'. Затем я перебираю строку, превращаю ее в число и добавляю к сумме.Сумма цифр с использованием методов tostring и number javascript

var num = 12345; 

function sumDigits(num) {  
    var sumOfDigits = 0;  
    num.toString();  
    for(var i = 0; i < num.length; i++){  
    sumOfDigits += Number(num[i]);  
    }  
    return sumOfDigits;  
} 
+1

Вы должны использовать charAt, потому что это строка, а не массив. Вы можете сделать эту работу, если вы сделали num.toString(). Split (''); – nixkuroi

+1

Вы не сохраняете результат, 'toString()' –

ответ

2

Вы не назначаете результат num.toString() на что угодно.

var num = 12345; 
 

 
function sumDigits(num) { 
 
    var sumOfDigits = 0; 
 
    num = num.toString(); 
 
    for (var i = 0; i < num.length; i++) { 
 
    sumOfDigits += Number(num[i]); 
 
    } 
 
    return sumOfDigits; 
 
} 
 

 
console.log(sumDigits(num));

0

Обновлено:

Вы можете использовать раскол, карта и уменьшить разделить массив, сопоставить его с целыми числами, а затем использовать функцию уменьшения просуммировать числа.

Вы можете устранить карту, если хотите переместить синтаксический анализ в сокращение, но мне нравится держать шаги отдельными.

var num = 12345; 
 

 
function sumDigits(num) {  
 
var sumOfDigits = num 
 
        .toString() 
 
        .split('') 
 
        .map(function(n) { return parseInt(n);}) 
 
        .reduce(function(acc, val) { 
 
          return acc + val; 
 
          }, 
 
          0 
 
       ); 
 
    return sumOfDigits; 
 

 
} 
 

 
var sum = sumDigits(num); 
 
console.log(sum)

+0

Обозначение скобок для строк является функцией ECMAScript 5. Это широко поддерживается. –

0

Я считаю, что вы можете использовать это один:

var num = 12345; 
    function sumDigits(num) { 
    //empty variable 
    var str; 
    //check type of the incoming value 
    (typeof num == "string") ? str = num : str = num.toString(); 
    //this is the same with above if you don't know how to use short handed if else 
    /* 
     if(typeof num == "string"){ 
      str = num; 
     } else { 
      str = num.toString(); 
     } 
    */ 
    //Array's split Method and a variable which u have create already 
    var arr = str.split(''), sumOfDigits = 0; 
    for(var i in arr){ 
     //You should use parseInt() method. 
     sumOfDigits += parseInt(arr[i]); 
    } 
    //return the sum of the digits 
    return sumOfDigits; 
}; 
console.log(sumDigits(num)); 

Если у вас есть проблемы в будущем пожалуйста, сначала искать немного, то пишите сюда :)

 Смежные вопросы

  • Нет связанных вопросов^_^