Javascript broj za konverziju malih slova. Pretvaranje tipova podataka u JavaScript. Pretvaranje u logičke vrijednosti

JavaScript je jezik sa dinamičkim kucanjem podataka. To znači da se vrijednosti mogu upisati u istu varijablu razne vrste, a tip same varijable će se promijeniti. Ovo ponašanje često omogućava da se zaboravi različito ponašanje varijabli sa različite vrste, ali je ipak potrebno zapamtiti ovu osobinu. Pokažimo to na sljedećem primjeru.

console.log(zbir(1, 2)); // 3 (ovdje je sve u redu) console.log(sum(1, "2")); // 12 (i ne mnogo ovdje)

Kao što se može vidjeti iz primjera, funkcija suma ponaša se pogrešno ako barem jedan od njegovih argumenata nije broj. Činjenica je da se prilikom „dodavanja“ broja u niz, broj pretvara u niz i on se spaja (zalijepi) sa drugim operandom.

Da biste izbjegli takve komplikacije, možete saznati tip varijable tokom izvršavanja skripte i prilagoditi njeno ponašanje ili pažljivo pratiti tipove varijabli.

typeof operator

Ovaj unarni operator uzima apsolutno bilo koju vrijednost kao operand i vraća njegov tip u string varijabli.

JavaScript ima sljedeće tipove podataka:

// 1.) objekt console.log (typeof ( ) ) ;

// objekt var p = ( x: 1, y: 3 ) ;

console.log(typeof p) ; // objekt // 2.) function function sayHello() ( console.log ("Zdravo!") ; ) console.log (typeof sayHello) ;// funkcija // 3.) string console.log (typeof "JavaScript" ) ;

Tip livenje

Uvođenje tipova u programiranju znači pretvaranje vrijednosti varijable jednog tipa u vrijednost drugog tipa.
Često se takva konverzija dešava bez kontrole programera. To se može vidjeti na primjeru sa funkcijom suma. Do promjene tipa dolazi kada je rezultat operacije nad varijablom originalnog tipa nejasan. Na primjer, nemoguće je tačno reći šta će biti rezultat dodavanja niza broju, ali operacija sabiranja dva broja je očigledna, te je u ovom slučaju logično svesti broj na niz.

Pretvaranje niza u broj

Ponekad programer sam može promijeniti tip varijable primjenom određenih operacija na nju. Na primjer, operacije povećanja ili smanjenja na stringu će ga svesti na broj.

var c = "nije-broj"; ++c; console.log(typeof c); // NaN

Vrijedi napomenuti da nema potrebe da se pribjegava ovoj metodi pretvaranja niza u broj zbog njegove loše čitljivosti i neočiglednosti. Postoje ugrađene funkcije za ovaj zadatak u js parseInt I parseFloat. Kao prvi argument uzimaju niz koji treba konvertovati u broj, a kao opcioni drugi argument uzimaju bazu brojnog sistema u kojem je broj upisan u nizu koji je prosleđen kao prvi argument. Ako drugi argument nije specificiran, tada će se pretpostaviti da red sadrži broj u decimalnom brojevnom sistemu.

Funkcija parseInt koristi se za pretvaranje niza u cijeli broj i funkciju parseFloat pretvoriti u razlomak.

var a = parseInt("10") ;

console.log ([ "a = " , a, "; typeof a:" , typeof a] .join ( " " ) ) ;

// a = 10 ; typeof a: broj var pi = parseInt("3.1415" ) ;

console.log("pi = " + pi) ; // pi = 3 pi = parseFloat("3.1415" ) ;

a = parseInt("010"); console.log("a = " + a); // a = 8 a = parseInt("0xAA"); console.log("a = " + a); // a = 170 a = parseFloat("1e-10"); console.log("a = " + a); // a = 1e-10 (1e-10 = 1 * 10 ^ -10 = 0,0000000001)

Kao drugi parametar funkcija parseInt I parseFloat Možete odrediti bazu brojevnog sistema.

a = parseInt("10" , 8 ) ;

console.log("a = " + a) ;

// a = 8 a = parseInt("010" , 10 ) ; parseInt I parseFloat console.log("a = " + a) ; // a = 10 a = parseInt("ff" , 16 ) ;.

console.log("a = " + a) ;

// a = 255

a = parseInt("10", 8); console.log("a = " + a); // a = 8 a = parseInt("010", 10); console.log("a = " + a); // a = 10 a = parseInt("ff", 16); console.log("a = " + a); // a = 255

Ako je vrijednost u nizu, funkcija

se uzima kao prvi parametar, nije numerički literal, tada će rezultat izvršavanja ovih funkcija biti vrijednost NaN

a = parseInt("nije broj") ;

console.log("a = " + a) ; // a = NaN a = parseFloat("nije broj") ; console.log("a = " + a) ;

// a = NaN

var p = (x: 2, y: 4), str; str = p.toString(); console.log(typeof str); // string console.log(str); // str = .toString(); console.log(typeof str); // string console.log(str); // 1,2,3

Brojčana konverzija

Konverzija u broj se dešava prilikom izvođenja matematičkih operacija i prilikom izvođenja operacije poređenja sa prelivanjem tipa (==, !=) i vrijednosti false i prazan niz se pretvaraju u tip vrijednosti 0 broj.

var a = istina + istina + istina; // 1 + 1 + 1 console.log(a); // 3

Neprazan niz, objekat i funkcija se prebacuju na string kada se koriste u aritmetičkim izrazima.

var arr = [1, 2, 3]; console.log(arr + 4);

// 1,2,34 funkcija sum(a, b) (vraćanje a + b; ) console.log (suma + 5) ;

// funkcija sum(a, b)(vraćanje a + b;)5 parseInt, parseFloat I // a = NaN a = parseFloat("nije broj") ;.

var arr = ; console.log(arr + 4); // 1,2,34 funkcija sum(a, b)(return a + b;) console.log(sum + 5); // funkcija sum(a, b)(vraćanje a + b;)5

Kao što možete vidjeti, implicitna konverzija tipa u js nije uvijek očigledna, pa biste je trebali izbjegavati korištenjem funkcija za eksplicitnu konverziju tipa, kao što je

To je sve. Kao i uvek, sretno vam!

JavaScript ima 2 ugrađene funkcije za pretvaranje stringova u brojeve: parseFloat() i parseInt() .

parseFloat() uzima kao argument string koji se konvertuje u numerički tip i vraća broj sa plutajućim brojem. Broj se mora pojaviti na početku reda. Ako u retku nakon broja ima još znakova, oni se odsječu. Razlomak broja mora biti napisan odvojen točkom (zarez se ne doživljava kao razdjelnik). Ako parseFloat() ne može pretvoriti string, vraća NaN.

ParseInt(string[, radix]) funkcija uzima string kao svoj prvi argument, analizira ga i vraća cijeli broj (tip integer). Funkcija pokušava analizirati brojčani sistem u kojem je napisan broj u izvornom nizu (na primjer, decimalni, oktalni ili heksadecimalni - ali ne samo ove). Također možete eksplicitno specificirati brojčani sistem tako što ćete ga proslijediti kao drugi parametarski osnovica. Radix parametar može imati bilo koji broj od 2 do 36 (u sistemima većim od 10 koriste se slova engleske abecede, od A do Z).

Funkcija ne rukuje brojevima poput 1.5e6 kao parseFloat() .

Molimo pročitajte donje primjere kako ne biste naletjeli na zamke skrivene u radu funkcije parseInt().

ParseInt(""25"") // 25 parseInt(""-25"") // -25 parseInt(""45.12"") // 45 parseInt(""045"",10) // 45 parseInt( ""70"",8) // 56 (70 u oktalnom je 56 u decimalnom) parseInt(""070"") // 56 (VAŽNO!!! nula će prvo uzrokovati da funkcija analizira string kao oktalni broj ) parseInt(" "88"",8) // NaN (nema cifre 8 u oktalnom sistemu) parseInt(""a1"") // NaN (VAŽNO!!! Zadana funkcija ne tretira broj kao heksadecimalni ako nije dodan na početne redove 0x) parseInt(""a1"",16) // 161 (ovdje je eksplicitno naveden brojevni sistem) parseInt(""0xa1"") // 161 (tačan heksadecimalni format broja , ne morate specificirati drugi parametar) parseInt( ""099"") // 0 (VAŽNO!!! Broj se tretira kao oktalni, ali sadrži nevažeće znakove) parseInt(""0.5e6"") / / 0 (VAŽNO!!! ne radi kao parseFloat) parseInt("" ZZ"",36) // 1295 parseInt(""-FF"") // NaN parseInt(""-FF"",16) / / -255

Ako obrađujete podatke iz tekstualno polje, koji korisnik unese, uvijek koristite parseInt() zajedno sa drugim parametrom radiksa, to će zaštititi vaš kod od neočekivanih rezultata.

The parseInt() funkcija analizira string argument i vraća cijeli broj navedenog radiksa (baza u matematičkim numeričkim sistemima).

Izvor za ovaj interaktivni primjer je pohranjen u GitHub spremištu. Ako želite doprinijeti projektu interaktivnih primjera, klonirajte https://github.com/mdn/interactive-examples i pošaljite nam zahtjev za povlačenjem.

Sintaksa

parseInt(string, radix)

Parameters

string Vrijednost za raščlanjivanje. Ako ovaj argument nije string, onda se konvertuje u jedan pomoću apstraktne operacije ToString. Vodeći razmak u ovom argumentu se zanemaruje. radix Opciono Cijeli broj između 2 i 36 koji predstavlja osnovicu (bazu u matematičkim numeričkim sistemima) niza. Budite oprezni - ovo je tako ne

zadano na 10 !

Detaljnije objašnjava šta se dešava kada radix nije naveden.

Povratna vrijednost

Cijeli broj raščlanjen iz datog niza.

Ako je osnova manji od 11, a prvi znak koji nije razmak ne može se pretvoriti u broj, vraća se NaN.

Opis

ParseInt funkcija konvertuje svoj prvi argument u string, analizira taj niz, a zatim vraća cijeli broj ili NaN.

Ako nije NaN, povratna vrijednost će biti cijeli broj koji je prvi argument uzet kao broj u navedenom osnovu. (Na primjer, radiks od 10 pretvara iz decimalnog broja, 8 pretvara iz oktalnog, 16 iz heksadecimalnog i tako dalje.)

Za radikale iznad 10, slova engleske abecede označavaju brojeve veće od 9. Na primjer, za heksadecimalne brojeve (baza 16), koriste se od A do F. Ako parseInt naiđe na znak koji nije broj u navedenom radixu, ignorira ga i sve sljedeće znakove i vraća cjelobrojnu vrijednost raščlanjenu do te točke. parseInt skraćuje brojeve na cjelobrojne vrijednosti. Dozvoljeni su vodeći i zadnji razmaci. Budući da neki brojevi koriste znak e u svom nizu prikaza (npr. radix Opciono Cijeli broj između 2 i 36 koji predstavlja osnovicu (bazu u matematičkim numeričkim sistemima) niza. Budite oprezni - ovo je tako 6.022e23

za 6.022 × 10 23), korištenje parseInt-a za skraćivanje brojeva će proizvesti neočekivane rezultate kada se koristi na vrlo velikim ili vrlo malim brojevima. parseInt bi trebao

koristiti kao zamjena za Math.floor() .

  1. parseInt razumije tačno dva znaka: + za pozitivan i - za negativan (od ECMAScript-a 1). Radi se kao početni korak u raščlanjivanju nakon uklanjanja razmaka. Ako se ne pronađu znakovi, algoritam prelazi na sljedeći korak; inače, uklanja znak i pokreće raščlanjivanje brojeva na ostatku niza.
  2. Ako je radix nedefiniran, 0 ili nespecificiran, JavaScript pretpostavlja sljedeće: Ako ulazni niz počinje sa "0x" ili "0X" (nula, nakon čega slijedi mala ili velika slova X), pretpostavlja se da je radix 16, a ostatak niza se analizira kao heksidecimalni broj. koristiti, ali to još ne podržavaju svi pretraživači. iz tog razloga, uvijek navedite radix kada koristite parseInt.
  3. Ako ulazni niz počinje s bilo kojom drugom vrijednošću, radiks je 10 (decimalno).

Ako se prvi znak ne može pretvoriti u broj, parseInt vraća NaN osim ako je osnova veći od 10.

Za aritmetičke svrhe, NaN vrijednost nije broj ni u jednom radiksu. Možete pozvati isNaN funkciju da odredite da li je rezultat parseInt NaN. Ako se NaN prenese na aritmetičke operacije, rezultat operacije će također biti NaN.

Da konvertujete broj u njegov string literal u određenom radiksu, koristite tajNumber .toString(radix) .

Primjeri

Korištenje parseInt

Svi sljedeći primjeri vraćaju 15:

ParseInt("0xF", 16) parseInt("F", 16) parseInt("17", 8) parseInt(021, 8) parseInt("015", 10) // ali `parseInt(015, 10)` će return 13 parseInt(15.99, 10) parseInt("15,123", 10) parseInt("FXX123", 16) parseInt("1111", 2) parseInt("15 * 3", 10) parseInt("15e2", 10) parseInt("15px", 10) parseInt("12", 13)

Svi sljedeći primjeri vraćaju NaN:

ParseInt("Hello", 8) // Uopće nije broj parseInt("546", 2) // Cifre različite od 0 ili 1 su nevažeće za binarni radiks

Svi sljedeći primjeri vraćaju -15:

ParseInt("-F", 16) parseInt("-0F", 16) parseInt("-0XF", 16) parseInt(-15.1, 10) parseInt("-17", 8) parseInt("-15", 10) parseInt("-1111", 2) parseInt("-15e1", 10) parseInt("-12", 13)

Svi sljedeći primjeri vraćaju 4:

ParseInt(4.7, 10) parseInt(4.7 * 1e22, 10) // Veoma veliki broj postaje 4 parseInt(0.00000000000434, 10) // Veoma mali broj postaje 4

Sljedeći primjer vraća 224:

ParseInt("0e0", 16) parseInt("123_456") // 123

Oktalne interpretacije bez radiksa

Iako ih ECMAScript 3 obeshrabruje i ECMAScript 5 zabranjuje, mnoge implementacije tumače numerički niz koji počinje s početnom 0 kao oktalni. Sljedeće može imati oktalni rezultat ili može imati decimalni rezultat. Uvijek navedite radiks kako biste izbjegli ovo nepouzdano ponašanje.

ParseInt("0e0") // 0 parseInt("08") // 0, jer "8" nije oktalna znamenka.

ECMAScript 5 uklanja oktalnu interpretaciju

ECMAScript 5 specifikacija funkcije parseInt više ne dozvoljava implementacijama da tretiraju nizove koji počinju sa 0 znakom kao oktalne vrijednosti. ECMAScript 5 kaže:

Funkcija parseInt proizvodi cjelobrojnu vrijednost diktiranu interpretacijom sadržaja argumenta stringa prema specificiranom osnovicu. Vodeći razmak u nizu se zanemaruje. Ako je radix nedefiniran ili 0, pretpostavlja se da je 10 osim kada broj počinje parovima znakova 0x ili 0X, u kom slučaju se pretpostavlja da je osnova 16.

Ovo se razlikuje od ECMAScript-a 3, koji je bio obeshrabren, ali je dozvoljavao oktalnu interpretaciju.

Mnoge implementacije nisu usvojile ovo ponašanje od 2013. godine, a zbog toga što stariji pretraživači moraju biti podržani, uvijek specificirajte radiks.

Stroža funkcija raščlanjivanja

Ponekad je korisno imati stroži način raščlanjivanja cijelih brojeva.

Regularni izrazi mogu pomoći:

Funkcija filterInt(value) (if (/^[-+]?(\d+|Infinity)$/.test(value)) (vrati broj(vrijednost)) else (vrati NaN)) console.log(filterInt( "421 ")) // 421 console.log(filterInt("-421")) // -421 console.log(filterInt("+421")) // 421 console.log(filterInt("Infinity")) // Infinity console.log(filterInt("421e+0")) // NaN console.log(filterInt("421hop")) // NaN console.log(filterInt("hop1.61803398875")) // NaN konzola .log (filterInt("1.61803398875")) // NaN

Specifikacije

Specifikacija Status Komentar
ECMAScript 1. izdanje (ECMA-262) Standard Početna definicija.
ECMAScript 5.1 (ECMA-262)
Standard
ECMAScript 2015 (6. izdanje, ECMA-262)
Definicija "parseInt" u toj specifikaciji.
Standard
ECMAScript najnoviji nacrt (ECMA-262)
Definicija "parseInt" u toj specifikaciji.
Nacrt

Kompatibilnost pretraživača

Tabela kompatibilnosti na ovoj stranici je generirana iz strukturiranih podataka. Ako želite doprinijeti podacima, pogledajte https://github.com/mdn/browser-compat-data i pošaljite nam zahtjev za povlačenje.

Ažurirajte podatke o kompatibilnosti na GitHub-u

DesktopMobilniServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome za AndroidFirefox za AndroidOpera za AndroidSafari na iOS-uSamsung InternetNode.js
parseIntChrome puna podrška 1Edge Puna podrška 12Firefox Puna podrška 1IE puna podrška 3Opera Puna podrška DaSafari Potpuna podrška DaWebView Android Puna podrška 1Chrome Android Puna podrška 18Firefox Android Puna podrška 4Safari iOS Potpuna podrška DaSamsung Internet Android Puna podrška 1.0nodejs Potpuna podrška Da
Raščlanjuje nizove početne nule su decimalni, a ne oktalniChrome puna podrška 23Edge Puna podrška 12Firefox Puna podrška 21IE puna podrška 9Opera Puna podrška DaSafari puna podrška 6WebView Android Puna podrška 4.4Chrome Android Puna podrška 25Firefox Android Puna podrška 21Opera Android Puna podrška DaSafari iOS Puna podrška 6Samsung Internet Android Puna podrška Danodejs Potpuna podrška Da

Pozdrav dragi čitaoci. Danas ću napisati kako se to pretvara u javascript niz do broja. Ovo se radi pomoću funkcije Broj, sada ću pokazati njenu upotrebu na primjeru.
Također predlažem da pogledate video verziju ovog članka:

Malo o tipovima podataka

Kao što znate, javascript ima numeričke i nizove tipove podataka. Pokušajmo napraviti dvije varijable u koje ćemo pohraniti brojeve, a zatim prikazati rezultat na ekranu.

Var a = 5; var b = 12; document.write(a + b);

Šta će biti rezultat? 17, što nam je pretraživač pokazao. Dakle, ovo su numerički podaci, tako da ih je pretraživač uspješno sabrao. Sada kreirajmo još dvije varijable u koje ćemo staviti iste vrijednosti, ali pod navodnicima. Da vas podsjetim da su svi redovi u javascriptu napisani pod navodnicima.

Var c = "5"; var d = "12"; document.write("
" + c + d);

Sada pretraživač naše podatke smatra nizovima i ako ih dodamo, onda će se jednostavno dodati dva reda i dobićemo 512, što nije tačan rezultat ako se dodaju brojevi, ali je tačno ako spojimo dva reda.

Kako pretvoriti niz u broj u javascriptu?

Ovdje je sve jednostavno, kreirajmo sljedeće dvije varijable, u koje ćemo upisati istu vrijednost koja je određena varijablama c i d, ali ih propuštajući kroz metodu Number:

Var e = Broj(c); var f = Broj(d); document.write(e + f);

Ako sada pokušate da prikažete rezultat ovog dodavanja na ekranu, prikazaće se 17. To je zato što je naša metoda uspešno funkcionisala i konvertovala je niz u broj. Želio bih da istaknem da ako to napišete ovako:

Document.write("
" + e + f);

Tada će na ekranu biti prikazano 512, jer prilikom dodavanja nizova i brojeva UVIJEK rezultat se pretvara u string. Ako želite dodati prijelom reda i dalje zadržati ispravan rezultat, možete sve napisati u dva reda ili jednom ovako:

Document.write("
" + (e + f));

Ako stavite brojeve u zagrade, oni se neće pretvoriti u nizove i uspješno će zadržati svoja svojstva. Ovo je moj današnji kratki članak. Nadam se da vam je javascript postao malo jasniji.

Izbor