2016-08-04 44 views
0

Ich arbeite an einer Übung als sehr Anfänger, Autodidakt (bisher) Programmierung Student. Ich habe dieses Array von Kreditkartennummern angegeben:How to Split Array von Strings in 2D-Array von einzelnen ganzen Zahlen

var myArray = ['4916-2600-1804-0530', '4779-252888-3972', '4252-278893- 7978', '4556-4242-9283-2260']; 

Ich bin die Bindestriche zu entfernen, wobei die Summe der einzelnen Zahlen der einzelnen Kreditkartennummer erhalten, und gibt die höchste Summe.

Ich habe die Striche korrekt entfernt:

var myArray = ['4916-2600-1804-0530', '4779-252888-3972', '4252-278893-7978', '4556-4242-9283-2260']; 

var noDashes = myArray.map(function(x){ return x.replace(/-/g,"") }); 

console.log(noDashes); 

Next I jede Zeichenfolge in eine ganze Zahl gedreht:

var strToInt = noDashes.map(function (x) { 
    return parseInt(x, 10); 

});

console.log(strToInt); 

Aber jetzt kann ich nicht herausfinden, wie das Array iterieren und drehen jede Long-Integer in sie einzelne Zahlen in einem 2D-Array ist zu wie folgt aussehen:

var newArray = [[4,9,1,6,2,6,0,0,1,8,0,4,0,5,3,0], [4,7,7,9,2,5,2,8,8,8,3,9,7,2], [4,2,5,2,2,7,8,8,9,3,7,9,7,8], [4,5,5,6,4,2,4,2,9,2,8,3,2,2,6,0]]; 

Ich weiß, ich brauche eine verwenden, for-Schleife und möglicherweise die .split-Methode, aber ich habe versucht, für zwei Tage mit einer Million verschiedenen Suchen und immer noch nicht mit allem, was funktioniert. Ich habe die vollständige Antwort auf diese Übung online gefunden, aber sie verwendet den Code viel zu weit fortgeschritten für mein Verständnis, also habe ich versucht, das Problem in Blöcke zu zerlegen, die ich verstehen kann.

Ich würde einige Anleitung schätzen! Vielen Dank!

+0

Verwenden Sie reduzieren, um die Arrays zu einer einzigen ganzen Zahl zu summieren, und verwenden Sie Math.max, um den größten zu finden. – Sukima

+0

Können Sie bitte zeigen, wie man reduziert? – dlucero

Antwort

0

Um die Summe Verwendung zu erhalten reduce:

newArray.map(function(x) { return x.reduce(function(a,b) { return a+b }) }) 

Um die maximale Summe zu erhalten, verwenden Math.max:

oneArray.reduce(function(a,b) { return a+b }) 

dass map verwenden, um jeden anzuwenden

Math.max.apply(null, newArray.map(function(x) { return x.reduce(function(a,b) { return a+b }) })) 

Eine zusätzliche Übung für Sie: Welche Kartennummer war das?

+0

Vielen Dank, dass Sie Schritt für Schritt die einzelnen Erklärungen gelöst haben - das ist sehr hilfreich! Ich werde mit der Antwort auf Ihre Frage zu Ihnen zurückkommen, sobald ich sicher bin, verstehe ich, wie das funktioniert :) – dlucero

0
var myArray = [ 
    '4916-2600-1804-0530', 
    '4779-252888-3972', 
    '4252-278893-7978', 
    '4556-4242-9283-2260' 
]; 

var sums = myArray.map(function (ccValue) { 
    return ccValue.replace(/[^0-9]/g, '').split(''); 
}) 
.reduce(function (a, b) { 
    return a + b; 
}); 

var largest = Math.max.apply(Math, sums); 

console.log(largest); 
+0

Vielen Dank! Ich schätze Ihre Hilfe! – dlucero

+0

@dlucero: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce – Sukima