Pereiti prie turinio

Rekomenduojami pranešimai

Sveiki. Tęsiu savo mokslus JavaScript'e. Gal kas galite paaiškinti, kodėl šis kodas grąžina trūkstamą raidę, o ne tiesiog antrą nuo galo raidę (kaip kad aš įsivaizduoju jis turėtų grąžinti (dėl code-1))?

 

function fearNotLetter(str) {

 

for(var i = 0; i < str.length; i++) {

/* code of current character */

var code = str.charCodeAt(i);

 

/* if code of current character is not equal to first character + no of iteration

hence character has been escaped */

if (code !== str.charCodeAt(0) + i) {

 

/* if current character has escaped one character find previous char and return */

return String.fromCharCode(code-1);

}

}

return undefined;

}

 

// test here

fearNotLetter("abcdefghijkmno");

Nuoroda į pranešimą
Dalintis kituose puslapiuose

var code = str.charCodeAt(i); - ši vieta gauna raidės kodą pagal ASCII lentelę (http://www.ascii-code.com/), pvz a - 97.

Pagal ascii, visos raidės eina iš eilės, todėl a-z yra 97-122.

if (code !== str.charCodeAt(0) + i) - ši vieta palygina ar dabartinė raidė yra einanti iš eilės. T.y. jeigu tikrinam b raidę (imant tavo pateiktą tekstą), gaunasi tokios reikšmės: 98 lygina su 97 + 1.

Jeigu nesutampa - atiduoda raidę, kurios nėra prieš dabartinę. Šiuo atveju - l raidė (108).

T.y. skaitant m raidę visas procesas atrodo taip:

 

for(var i = 0; i < str.length; i++) { // i reikšmė yra 11

var code = str.charCodeAt(i); //109 (nes m pagal ascii yra tiek)

if (code !== str.charCodeAt(0) + i) { // if (109 !== 97 + 11) { , arba kitaip: if (109 !== 108) {, kas reiškia tiesa - einam į if'o vidų

return String.fromCharCode(code-1); // String.fromCharCode(109-1) yra 108, kas yra l raidė. T.y. fromCharCode supranta, kad tu pateiki ascii reikšmę ir ją atvaizduoja į atitinkamą simbolį, šiuo atveju - l raidę.

 

Jeigu norėtum priešpaskutinės raidės, tai tiesiog

function secondToLastLetter(str) {

if(str.length > 1)

{

return str[str.length-2];

}

return undefined;

}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...