2016-11-21 7 views
1

負の数と正の数の各桁を合計する関数を作成しようとしています。私は数字を分割した後に負の数を合計する方法について固執します。 ' - '記号をエスケープして[ '-', '5', '3', '8' ]の代わりに['-5', '3', '8' ]を返すか、この問題を解決する方法が間違っていますか?分割して負の数を分けて合計する

function sumDigits(num) { 
 
    var count = 0; 
 
    
 
    var intermediate = num.toString().split('') 
 
    
 
    for(var i = 0; i < intermediate.length; i++){ 
 
     count += parseInt(intermediate[i]) 
 
     
 
} 
 
    return count; 
 
} 
 

 

 
var positive = sumDigits(2309); 
 
console.log(positive); // --> 14 
 

 

 
var negative = sumDigits(-8525); 
 
console.log(negative); // --> 4

+0

'VAR中間= NUM​​。 toString()。match(/ - ?[0-9]/g); ' –

+0

あなたのスニペットは現在haです。 (中間の[i];の後のセミコロン)... –

+0

数字のモジュロ演算を行い、余りを合計したいかもしれません。 – lastr2d2

答えて

5

数字で、オプション-に一致する正規表現で使用String#match

function sumDigits(num) { 
 
    var count = 0; 
 
    var intermediate = num.toString().match(/-?\d/g); 
 
    for (var i = 0; i < intermediate.length; i++) { 
 
    count += parseInt(intermediate[i]) 
 
    } 
 
    return count; 
 
} 
 

 

 
var positive = sumDigits(2309); 
 
console.log(positive); 
 

 

 
var negative = sumDigits(-8525); 
 
console.log(negative);

0

現在のcharはそうのように、-である場合にはあなたは、trueにnextIsMinusを設定できます

function sumDigits(num) 
 
{ 
 
    var count = 0; 
 
    var intermediate = num.toString().split('') 
 
    var nextIsMinus = false; 
 
    for(var i = 0; i < intermediate.length; i++) 
 
    { 
 
     if(intermediate[i] == "-") 
 
     { 
 
      nextIsMinus = true; 
 
     } else 
 
     { 
 
      if(nextIsMinus) 
 
      { 
 
       count -= parseInt(intermediate[i]); 
 
       nextIsMinus = false; 
 
      } else 
 
      { 
 
       count += parseInt(intermediate[i]); 
 
      } 
 
     } 
 
    } 
 
    return count; 
 
} 
 

 

 
console.log(sumDigits(2309)); 
 
console.log(sumDigits(-8525));

関連する問題