2017-01-01 5 views
-3

Ich bin daran interessiert, die Kreditkartennummer zu finden, deren Ziffern die größte Zahl ergeben. Wenn mehr als einer dieselbe größte Ziffernsumme hat, möchte ich den letzten in der Liste mit dieser Summe haben.Suche nach der größten Summe von Kreditkarten

Ich versuche, eine einzige Funktion zu schreiben, die ein Argument benötigt. Dieses Argument wird eine Reihe von Kreditkartennummern sein. Angenommen, das Array kann eine beliebige Anzahl von Kreditkartennummern haben und jede ist eine Folge von Ziffern und Bindestrichen. Die Funktion sollte die Kreditkartennummer zurückgeben, die die größte Ziffernsumme aufweist. Hier

ist, was ich habe so weit

function getSum(stringLength) { 
    var stringLength = ['1476-0089-5132-7420', '2034-6002-3978-5567', '6647-1123-5895-0038']; 
    var i; 
    for (i = 0; i < stringLength; i++); 
    for (string = 0; string < [3]; stringLength++); 
    //stringLength + i =Sum ; 

    if (0 > 1, 2) { 
     return string(0); 
    } else if (1 > 0, 2) { 
     return string(1); 
    } else(2 > 1, 0) { 
     return string(2); 
    } 
    console.log('1476-0089-5132-7420', '2034-6002-3978-5567', '6647-  1123-5895-0038'); 
    console.log('The Larget Sum is:' + true); 
    } 
    /*criteria for code: Contain all variables and code needed within  a function. 
    Have that function take one argument which will be an array of credit card number strings. 
    Determine the sum of digits for each credit card number. 
    Determine which credit card number has the last largest sum of digits. 
    Use a return statement to return the required card number in its’ original form.*/ 
+3

Dieser Code ist ein Chaos. 'für (i = 0; i Barmar

+0

'stringLength ++' macht keinen Sinn, da 'stringLength' ein Array ist, keine Zahl. Was soll 'if (0> 2, 3)' bedeuten? – Barmar

+0

Was soll 'return string (0) 'tun? Es gibt keine 'string()' Funktion, 'string' ist der Name der Variablen in Ihrer zweiten' for' Schleife. – Barmar

Antwort

0

Sie können versuchen, diesen Ansatz:

Hinweis: ; wird verwendet, um eine Aussage zu beenden, so dass, wenn Sie tun for(...); Schleife endet dort und es tut Nichts machen.

var cardNos = ['1476-0089-5132-7420', '2034-6002-3978-5567', '6647-1123-5895-0038']; 
 

 
var largestSum = cardNos.reduce(function(p,c){ 
 
    return Math.max(p, getSumOfDigits(c)) 
 
}, 0); 
 

 
function getSumOfDigits(str){ 
 
    var s = str.replace(/[^0-9]/g, '').split(""); 
 
    return s.reduce(function(p,c){ return +p + +c}); 
 
} 
 

 
console.log(largestSum);

Verwandte Themen