Summe aller Ziffern einer Zahl

Gegeben Problem:
Schreiben Sie eine Funktion namens „sumDigits“.

Erhält eine Nummer, „sumDigits“ gibt die Summe aller Ihrer Ziffern.

var output = sumDigits(1148);
console.log(output); //--> 14

Wenn die Zahl negativ ist, ist die erste Ziffer sollte zählen als negativ.

var output = sumDigits(-316);
console.log(output); //--> 4

Mein code:

function sumDigits(num) {
  return num.toString().split("").reduce(function(a, b){
    return parseInt(a) + parseInt(b);
  });
}

Mein code löst das problem, dass für positive ganze zahlen sind. Irgendwelche Tipps, wie gehe ich bei der Lösung des Problems der negativen ganzen zahlen? Bitte und danke.

Edit: Und was ist, wenn die gegebene Zahl ist 0? Ist es akzeptabel, eine if-Anweisung hinzufügen, geben 0 zurück, in solchen Fällen?

  • Die Frage sagt, dass, wenn die Zahl negativ ist die erste Ziffer wird als negativ angesehen
  • Und, by the way, diese Frage sieht bitte meine Hausaufgaben. Diese Website ist nicht eine Kostenlose Hausaufgaben-service.
  • Er ist nicht von uns verlangt, seine Hausaufgaben tun. Er bittet Hilfe zu einem bestimmten Teil der Arbeit, die er bereits begonnen. Ob das Hausaufgaben machen oder nicht, es ist ein völlig in Ordnung, die Frage auf Stack Overflow.
  • Wie ist dieses „bitte meine Hausaufgaben“ – Typ in Frage? Auch dies ist nicht hw. Dies ist Teil der hackreactor prep-Kurs, ich bin dabei, mich weiterzubilden JS.
InformationsquelleAutor Vikrant Singh | 2017-05-03



3 Replies
  1. 4

    Könnten Sie (String#match statt (String#split für ein neues array.

    JS:

    function sumDigits(num) {
        return num.toString().match(/-?\d/g).reduce(function(a, b) {
            return +a + +b;
        });
    }
    
    console.log(sumDigits(1148)); //14
    console.log(sumDigits(-316)); //4

    • Ich mag diese viel besser als meine Antwort
  2. 5

    Überprüfen, um zu sehen, ob das erste Zeichen ist ein -. Wenn dem so ist, b ist Ihre erste Ziffer und sollte negativ sein:

    function sumDigits(num) {
      return num.toString().split("").reduce(function(a, b){
        if (a == '-') {
          return -parseInt(b);
        } else {
          return parseInt(a) + parseInt(b);
        }
      });
    }
  3. 2

    Jemand, der auf der Suche nach einer Lösung ohne reduce Funktionen usw. kann diesem Ansatz.

    JS:

    function sumDigits(num) {
            
            var val = 0, remainder = 0;
                
            var offset = false;
            if (num <0) {
                offset = true;
                num = num * -1;
            }
            
            while (num) {
                remainder = num % 10;
                val += remainder;
                num = (num - remainder) / 10;
            }
    
            if (offset) {
                val -= 2 * remainder;//If the number was negative, subtract last 
                                     //left digit twice
            }
    
            return val;
    
        }
    
        var output = sumDigits(-348);
        console.log(output); 
        output = sumDigits(348);
        console.log(output);
        output = sumDigits(1);
        console.log(output);

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.