Ich schreibe gerade an einer Formularvalidierung in JS. Der User gibt eine Ziffernfolge in ein <input>-feld ein, die nach einem Algorithmus auf Validität überprüft wird. Durch die Übergabe per POST wird aus dem ursprünglichen Zahlenwert ein String. Aus dem String wiederum lassen sich einzelne Ziffern herausziehen und in einem Array ablegen. Die implizite Typumwandlung ermöglicht es dabei, mit den Ziffern zu rechnen, und der Rückgabewert ist dann vom Typ Number.
Das ganze sieht so aus. Da wir hier kein Formular haben, übergebe ich den Zahlenwert als Stringvariable:
Der funktioniert zwar, ist aber nicht schön, weil sich die Verkettung der Werte in v[0] über eine Schleife kürzer abbilden lässt. Also habe ich es umgeschrieben.
Bei der unteren Funktion muss explizit v[0] = 0 deklariert werden, weil ich ansonsten ein NAN zurückerhalte, und das leuchtet mir nicht ein.
Das ganze sieht so aus. Da wir hier kein Formular haben, übergebe ich den Zahlenwert als Stringvariable:
Code:
function validateMe(cpf) {
var v = [];
v[0] = 10 * cpf[0] + 9 * cpf[1] + 8 * cpf[2] + 7 * cpf[3] + 6 * cpf[4] + 5 * cpf[5] + 4 * cpf[6] + 3 * cpf[7] + 2 * cpf[8];
v[0] = 11 - v[0] % 11;
return v[0];
}
cpf = "80465434118";
validateMe(cpf);
Der funktioniert zwar, ist aber nicht schön, weil sich die Verkettung der Werte in v[0] über eine Schleife kürzer abbilden lässt. Also habe ich es umgeschrieben.
Code:
function validateMe(cpf) {
var v = [],
val = -1;
v[0] = 0; // <-- Um diese Zeile geht es
for (i = cpf.length - 1; i >= 2; i-- ) {
val++;
v[0] += i * cpf[val];
}
v[0] = cpf.length - v[0] % cpf.length;
return v[0];
}
cpf = "80465434118";
validateMe(cpf);
Bei der unteren Funktion muss explizit v[0] = 0 deklariert werden, weil ich ansonsten ein NAN zurückerhalte, und das leuchtet mir nicht ein.
Zuletzt bearbeitet: