Det var ett tag sedan jag gjort min första ”personnummerkontroll” och för inte så längesedan skrev jag om källkoden för den. Nu har jag även gjort om koden på hemsidan till en ”oneliner”-kod. Dvs kod som upptar så lite plats som möjligt i html-dokumentet.
Syftet med koden var egentligen ganska enkelt. Det var kul att se om det ”gick” att interaktivt plocka fram kontrollsiffran i ett personnummer. Sedan dess har uppenbarligen en personlig utveckling pågått även på Javascript-fronten alltså. Det är ganska onödigt egentligen, men någon kanske har nytta av det… Annars är det inte helt fel som övningsobjekt heller.
Så här blev den nya kontrollen:
function BirthCheck(pnr)
{
var sum = "";
var newsum = 0;
if (pnr.length == 9) { pnr += "0"; } // Lägg till ett nummer till så vi får 10 tecken!
if (pnr.length == 10) // aktiveras endast här
{
for (var i = 0 ; i < 9 ; i ++) { if (i % 2 == 0) { sum = sum + pnr.substr(i, 1) *2; } else { sum = sum + pnr.substr(i, 1); } }
for (var i = 0 ; i <= sum.length ; i ++) { newsum += Number(sum.substr(i, 1)); }
if (10 - Number(newsum.toString().substr(newsum.toString().length-1, 1)) >= 10) { return 0; } else { return 10 - Number(newsum.toString().substr(newsum.toString().length-1, 1)); }
}
}
Det är inte den fullständiga koden (som numera publiceras på en av ovanstående länkar), men just denna del är den som returnerar kontrollsiffran i personnumret.
Återigen har alltså kilometerlång källkod kortats ned till endast en bråkdel av den första versionen, som delvis såg ut så här (skärmen räckte inte ens till alltså).



Comments