25. juli 2008 - 18:58Der er
6 kommentarer og 1 løsning
Forklaring af kort JS funktion
Hejsa, nu jeg ikke den helt store JS haj og istedet for selv at sidde og slå alle funktionerne op og prøve at regne funktionen ud søger jeg lige lidt hjælp herinde :)
Søger altså en forklaring af hvad følgende funktion helt konkret gør. Kommentarer indsat i koden er nok at foretrække men hvis du kan forklare det blot med ord er det også fint for mig :)
Funktionen: (tager en enkelt parameter st som er et nummer) if ( st == null ) return false; if (st.length > 19) return false; sum = 0; mul = 1; l = st.length; for (x = 0; x < l; x++) { digit = st.substring(l-x-1,l-x); tproduct = parseInt(digit ,10)*mul; if (tproduct >= 10) sum += (tproduct % 10) + 1; else sum += tproduct; if (mul == 1) mul++; else mul--; } if ((sum % 10) == 0) return true; else return false;
// Hvis der ikke er overført parametret st til funktionen, så stopper den. if ( st == null ) return false; // Hvis st har over 19 tegn, så stopper funktionen. if (st.length > 19) return false;
sum = 0; mul = 1; l = st.length;
//En løkke som kører for hvert tegn i st. for (x = 0; x < l; x++) {
//Henter det tegn, den er nået til. digit = st.substring(l-x-1,l-x); tproduct = parseInt(digit ,10)*mul;
if (tproduct >= 10) sum += (tproduct % 10) + 1; else sum += tproduct; if (mul == 1) mul++; else mul--; } if ((sum % 10) == 0) return true; else return false;
Den sidste del er forskellige udregninger. "%"-tegnet betyder "modulus", dvs. den rest der er tilbage ved division. Så "tproduct % 10" betyder "resten, når man dividerer tproduct med 10".
Jeg har ingen anelse om, hvad funktionens formål er. :) Hvor har du den fra, hvad skal du bruge den til, hvorfor ved du ikke, hvad den gør?
1. ciffer ganges med 1 2. ciffer ganges med 2 3. ciffer ganges med 1 4. ciffer ganges med 2 5. ciffer ganges med 1 osv.
I de tilfælde hvor der ganges med 1, vil denne stump kode:
if (tproduct >= 10) sum += (tproduct % 10) + 1; else sum += tproduct;
- blot lægge cifferet til variablen sum (fordi at tproduct = cifferet < 10).
I de tilfælde hvor der ganges med 2, vil koden skelne mellem om ciffret er over eller under 5. 5 ganges nemlig med 2 og bliver til 10.
A) Er den over tages modulus og der lægges 1 til: 7 -> 14 -> 4 -> 5 (dette tal vil forresten altid være ulige). B) Er den under ganges der bare med 2: 4 -> 8 (dette tal vil altid være lige).
Dette tal lægges til sum.
Til sidst tjekkes det om sum er deleligt med 10; Der retuneres sand hvis den er, og falsk ellers.
Hvad formålet med funktionen er står derimod hen i det uvisse. ;^)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.