Javascript qanday qilib qatordan raqam yasash mumkin. Qanday qilib javascript satrni raqamga o'zgartiradi? Konvertatsiya saralanmoqda

JavaScript - bu dinamik yozilgan til. Bu shuni anglatadiki, har xil turdagi qiymatlar bir xil o'zgaruvchiga yozilishi mumkin va o'zgaruvchining turi o'zgaradi. Bunday xatti -harakatlar, har xil turdagi o'zgaruvchilarning har xil xatti -harakatlarini unutishga imkon beradi, lekin baribir bu xususiyat haqida eslash kerak. Keling, buni quyidagi misol bilan ko'rsataylik.

console.log (sum (1, 2)); // 3 (bu erda hamma narsa yaxshi) console.log (sum (1, "2")); // 12 (bu erda unchalik yaxshi emas)

Misoldan ko'rinib turibdiki, funktsiya sum Agar raqam uning argumentlaridan kamida bittasi sifatida berilmagan bo'lsa, u o'zini noto'g'ri tutadi. Gap shundaki, qatorga raqamni "qo'shganda", raqam satrga aylanadi va u ikkinchi operand bilan biriktiriladi (yopishtiriladi).

Bunday asoratlarni oldini olish uchun siz skriptni bajarishda o'zgaruvchining turini bilib olishingiz va uning xatti -harakatlarini to'g'rilashingiz yoki o'zgaruvchilar turlarini diqqat bilan kuzatib borishingiz mumkin.

Operator turi

Bu yagona operator operator sifatida har qanday qiymatni oladi va uning turini string o'zgaruvchisiga qaytaradi.

JavaScript -da quyidagi ma'lumotlar turlari mavjud:

// 1.) ob'ekt konsol.log (typeof ()); // ob'ekt var p = (x: 1, y: 3); console.log (p turi); // object // 2.) funktsiyasi sayHello () (console.log ("Salom!");) console.log (sayHello turi); // funktsiya // 3.) string console.log ("JavaScript" turi); // string // 4.) console.log raqami (3.1415 turi); // raqam // 5.) mantiqiy konsol.log (haqiqiy turdagi); // boolean // 6.) aniqlanmagan var notExistsOne; console.log (notExistsOne turi); // aniqlanmagan console.log (typeof notExistsTwo); // aniqlanmagan

// 1.) ob'ekt konsol.log (typeof ()); // ob'ekt var p = (x: 1, y: 3); console.log (p turi); // ob'ekt // 2.) funktsiyasi sayHello () (console.log ("Salom!");) console.log (sayHello turi); // funktsiya // 3.) string console.log ("JavaScript" turi); // string // 4.) console.log raqami (3.1415 turi); // raqam // 5.) boolean console.log (rost turi); // boolean // 6.) aniqlanmagan var notExistsOne; console.log (notExistsOne turi); // aniqlanmagan console.log (typeof notExistsTwo); // aniqlanmagan

Eslab qoling aniqlanmagan bu ham bitta qiymatdan iborat ma'lumotlar turi.

Cast

Dasturlashda yozuvni yozish deganda bir turdagi o'zgaruvchining qiymatini boshqa turdagi qiymatga aylantirish tushuniladi.
Ko'pincha bu konvertatsiya dasturchining nazoratisiz sodir bo'ladi. Buni funktsiyali misolda ko'rish mumkin sum... Agar asl turdagi o'zgaruvchida bajarilgan operatsiya natijasi noaniq bo'lsa, tur o'zgaradi. Masalan, siz raqamga mag'lubiyat qo'shish natijasida nima bo'lishini aniq ayta olmaysiz, lekin ikkita raqamni qo'shish jarayoni aniq va bu holda raqamni satrga aylantirish mantiqan to'g'ri keladi.

Satrni raqamga aylantirish

Ba'zida dasturchining o'zi unga ma'lum amallarni qo'llash orqali o'zgaruvchining turini o'zgartirishi mumkin. Masalan, mag'lubiyatni kattalashtirish yoki qisqartirish uni raqamga aylantiradi.

var c = "raqam emas"; ++ c; console.log (c turi); // NaN

Ta'kidlash joizki, satrni raqamga aylantirishning bu usulini o'qishning yomonligi va aniq bo'lmaganligi uchun ishlatishga hojat yo'q. JS da bu vazifani bajarish uchun o'rnatilgan funktsiyalar mavjud parseInt va parseFloat... Birinchi dalil sifatida ular raqamga aylantiriladigan satrni, ikkinchisi - ixtiyoriy - sanoq tizimining asosini oladi, bunda raqam birinchi argument sifatida berilgan satrda yoziladi. Agar ikkinchi dalil ko'rsatilmagan bo'lsa, qatorda o'nlik raqam mavjud deb hisoblanadi.

Funktsiya parseInt satrni butun songa va funktsiyaga aylantirish uchun ishlatiladi parseFloat kasrga aylantirish.

var a = parseInt ("10"); console.log (["a =", a, "; a tipi:", a turi] .join ("")); // a = 10; a turi: son var pi = parseInt ("3.1415"); console.log ("pi =" + pi); // pi = 3 pi = parseFloat ("3.1415"); console.log ("pi =" + pi); // pi = 3.1415

var a = parseInt ("10"); console.log (["a =", a, "; a tipof:", a tipidagi a] .join ("")); // a = 10; a turi: son var pi = parseInt ("3.1415"); console.log ("pi =" + pi); // pi = 3 pi = parseFloat ("3.1415"); console.log ("pi =" + pi); // pi = 3.1415

E'tibor bering, satrda o'n oltilik, sakkizlik yoki eksponentli har qanday raqamli qiymat bo'lishi mumkin.

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)

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)

Funktsiyalarning ikkinchi parametri sifatida parseInt va parseFloat radiusni belgilashingiz mumkin.

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

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

Agar vazifasi bajariladigan satrdagi qiymat bo'lsa parseInt va parseFloat birinchi parametr sifatida qabul qiling, bu raqamli emas, keyin bu funktsiyalarning natijasi qiymat bo'ladi NaN.

a = parseInt ("raqam emas"); console.log ("a =" + a); // a = NaN a = parseFloat ("raqam emas"); console.log ("a =" + a); // a = NaN

a = parseInt ("raqam emas"); console.log ("a =" + a); // a = NaN a = parseFloat ("raqam emas"); console.log ("a =" + a); // a = NaN

String konvertatsiyasi

JavaScript -da har qanday turdagi qiymatni satrga o'tkazish mumkin. Yuqorida aytilganidek, qatorni raqam bilan birlashtirganda, bu raqam mag'lubiyatga aylanadi va shundan keyingina birlashma sodir bo'ladi. Bu har qanday turdagi qiymat bilan sodir bo'ladi.

var str = "Ob'ekt:" + (); console.log (str); // Ob'ekt: str = "Array:" + [1, 2, 3]; console.log (str); // Array: 1,2,3 funktsiya yig'indisi (a, b) (a + b qaytarish;) str = "Funktsiya:" + yig'indisi; console.log (str); / * Funktsiya: funktsiya yig'indisi (a, b) (a + b qaytaring;) * /

var str = "Ob'ekt:" + (); console.log (str); // Ob'ekt: str = "Array:" +; console.log (str); // Array: 1,2,3 funktsiya yig'indisi (a, b) (a + b qaytarish;) str = "Funktsiya:" + yig'indisi; console.log (str); / * Funktsiya: funktsiya yig'indisi (a, b) (a + b qaytaring;) * /

Darhaqiqat, ob'ektni mag'lubiyatga uzatishda, usul aniq nomlanadi toString buni aniq chaqirish mumkin.

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

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

Raqamli konvertatsiya

Raqamga aylantirish matematik operatsiyalarni bajarishda va turni konvertatsiya qilish bilan solishtirish operatsiyasini bajarishda (== ,! =) sodir bo'ladi. yolg'on va bo'sh qator 0 turdagi qiymatga aylantiriladi raqam.

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

Bo'sh bo'lmagan massiv, ob'ekt va funksiya arifmetik ifodalarda ishlatilganda mag'lubiyatga uzatiladi.

var arr = [1, 2, 3]; console.log (arr + 4); // 1,2,34 funktsiya sum (a, b) (a + b qaytarish;) console.log (sum + 5); // funktsiya yig'indisi (a, b) (a + b qaytaring;) 5

var arr =; console.log (arr + 4); // 1,2,34 funktsiya sum (a, b) (a + b qaytarish;) console.log (sum + 5); // funktsiya yig'indisi (a, b) (a + b qaytaring;) 5

Ko'rib turganingizdek, js -dagi yopiq turdagi konvertatsiya har doim ham aniq emas, shuning uchun siz aniq turdagi konvertatsiya qilish funktsiyalari yordamida undan qochishingiz kerak. parseInt, parseFloat va toString.

Hammasi shu. Har doimgidek, sizga omad!

Oxirgi yangilanish: 1.11.2015

Ko'pincha bir ma'lumotni boshqasiga o'zgartirish kerak bo'ladi. Masalan:

Var raqami1 = "46"; var soni2 = "4"; var natija = son1 + son2; console.log (natija); // 464

Ikkala o'zgaruvchi ham satrlarni, aniqrog'i, sonlarning satrli tasvirini ifodalaydi. Va natijada biz 50 raqamini emas, balki 464 -qatorni olamiz. Lekin ularni qo'shish, olib tashlash, umuman olganda oddiy raqamlar kabi ishlash ham yaxshi bo'lardi.

Bunday holda biz transformatsiya operatsiyalaridan foydalanishimiz mumkin. Satrni raqamga aylantirish uchun funksiyadan foydalaning parseInt ():

Var raqami1 = "46"; var soni2 = "4"; var natija = parseInt (son 1) + parseInt (son 2); console.log (natija); // 50

Satrlarni kasr sonlarga aylantirish uchun funksiyadan foydalaning parseFloat ():

Var raqami1 = "46.07"; var soni2 = "4,98"; var natija = parseFloat (1 -son) + parseFloat (son 2); console.log (natija); //51.05

Bunday holda, satr aralash tarkibga ega bo'lishi mumkin, masalan, "123hello", ya'ni bu holda raqamlar mavjud, lekin oddiy belgilar ham mavjud. Lekin parseInt () usuli hali ham konvertatsiya qilishga harakat qiladi:

Har xil raqam1 = "123 salom"; var num2 = parseInt (raqam1); console.log (raqam 2); // 123

Agar usul o'zgartirilmasa, u NaN (Raqam emas) qaytaradi, bu satr raqamni ko'rsatmasligini va uni aylantirish mumkin emasligini ko'rsatadi.

Maxsus funktsiya bilan isNaN () satr raqamni anglatishini tekshirishingiz mumkin. Agar satr raqam bo'lmasa, funktsiya rostni qaytaradi, agar bu raqam noto'g'ri bo'lsa:

Har xil raqam1 = "javascript"; var num2 = "22"; var natija = isNaN (num1); console.log (natija); // rost - num1 raqamli natija emas = isNaN (num2); console.log (natija); // noto'g'ri - num2 - bu raqam

Yuqorida biz qatorlarni o'nlik tizimdagi raqamlarga aylantirishni ko'rib chiqdik. Biroq, biz raqamlarni istalgan tizimga tarjima qila olamiz. Odatiy bo'lib, JavaScript tarjimonining o'zi biz qatorni qaysi raqamli tizimga aylantirmoqchi ekanimizni taxmin qiladi (qoida tariqasida, o'nlik tizim tanlanadi). Lekin biz ikkinchi parametrdan foydalanib, ma'lum bir tizimdagi qatorni raqamga aylantirmoqchi ekanligimizni aniq ko'rsatishimiz mumkin. Masalan, ikkilik raqamga aylantirish:

Var soni 1 = "110"; var num2 = parseInt (raqam1, 2); console.log (raqam 2); // 6

Natijada 6 bo'ladi, chunki ikkilikda 110 kasrda 6 bo'ladi.

Keling, o'zgaruvchilar bilan operatsiyalarni ishlatadigan kichik dastur yozaylik:

JavaScript

Tezkor () funktsiyasidan foydalanib, brauzer sizdan biror qiymat kiritishingizni so'raydigan dialog oynasini ko'rsatadi. Bu funksiyaning ikkinchi argumenti standart qiymatni ko'rsatadi.

Biroq, prompt () funktsiyasi qatorni qaytaradi. Shuning uchun, biz u bilan operatsiyalarni bajarish uchun bu satrni raqamga aylantirishimiz kerak.

Sahifani brauzerda ochgandan so'ng, biz depozit miqdorini kiritish taklifini ko'ramiz:

Xuddi shunday xabar foiz kiritish uchun ko'rsatiladi. Va oxirida dastur ma'lumotlarni oladi, uni raqamlarga aylantiradi va hisobni bajaradi.

The parseInt () funktsiya mag'lubiyat argumentini tahlil qiladi va belgilangan radiusning butun sonini qaytaradi (matematik raqamli tizimlar bazasi).

Ushbu interaktiv misol uchun manba GitHub omborida saqlanadi. Agar siz interaktiv misollar loyihasiga o'z hissangizni qo'shmoqchi bo'lsangiz, iltimos, https://github.com/mdn/interactive-examples klonini yozing va bizga so'rov yuboring.

Sintaksis

parseInt (satr, radix)

Parametrlar

string Tahlil qilinadigan qiymat. Agar bu argument satr bo'lmasa, u ToString mavhum operatsiyasi yordamida biriga aylanadi. Bu bahsda etakchi bo'sh joy e'tiborga olinmaydi. radix Ixtiyoriy 2 dan 36 gacha bo'lgan tamsayı, bu satrning radixini (matematik raqamli tizimlar bazasi) ifodalaydi. Ehtiyot bo'ling-bu shunday bo'ladi emas standart - 10! Radix ta'minlanmaganida nima bo'lishini batafsil tushuntiradi.

Qaytish qiymati

Berilgan qatordan ajratilgan butun son.

Agar radius 11dan kichik bo'lsa va bo'sh joy bo'lmagan birinchi belgini raqamga aylantirish mumkin bo'lmasa, NaN qaytariladi.

Tavsif

ParseInt funktsiyasi o'zining birinchi argumentini mag'lubiyatga o'zgartiradi, bu satrni tahlil qiladi, so'ngra butun sonni yoki NaNni qaytaradi.

NaN bo'lmasa, qaytish qiymati ko'rsatilgan radiusda raqam sifatida qabul qilingan birinchi argument bo'lgan tamsayı bo'ladi. (Masalan, 10 radiusi o'nlik kasrdan, 8 sakkizlikdan, 16 o'n oltilikdan va boshqalarni o'zgartiradi).

10 dan yuqori radiklar uchun ingliz alifbosidagi harflar 9dan katta raqamlarni bildiradi. Masalan, o'n oltilik sonlar uchun (16 -tayanch) A dan F gacha ishlatiladi.

Agar parseInt ko'rsatilgan radiusda raqam bo'lmagan belgiga duch kelsa, u unga va keyingi barcha belgilarga e'tibor bermaydi va shu nuqtagacha ajratilgan tamsayı qiymatini qaytaradi. parseInt sonlarni butun sonlarga qisqartiradi. Bosh va oxirgi joylarga ruxsat beriladi.

Chunki ba'zi raqamlar o'z belgisida e belgisini ishlatadi (masalan. 6.022e23 6.022 × 10 23 uchun) raqamlarni kesish uchun parseInt dan foydalanish juda katta yoki juda kichik sonlarda ishlatilganda kutilmagan natijalarga olib keladi. parseInt kerak emas Math.floor () o'rnini bosuvchi sifatida ishlatiladi.

parseInt aniq ikkita belgini tushunadi: + ijobiy uchun, va - salbiy (ECMAScript 1dan beri). Bu bo'sh joy olib tashlanganidan keyin tahlil qilishning birinchi bosqichi sifatida amalga oshiriladi. Hech qanday belgilar topilmasa, algoritm quyidagi bosqichga o'tadi; aks holda, u belgini olib tashlaydi va qatorning qolgan qismida raqamlarni ajratishni bajaradi.

Agar radix aniqlanmagan bo'lsa, 0 yoki aniqlanmagan bo'lsa, JavaScript quyidagilarni nazarda tutadi:

  1. Agar kirish qatori "0x" yoki "0X" (nol, undan keyin kichik harf yoki katta harf) bilan boshlangan bo'lsa, radix 16 deb qabul qilinadi va qolgan qator o'n oltilik raqam sifatida tahlil qilinadi.
  2. Agar kirish qatori "0" (nol) bilan boshlanadigan bo'lsa, radius 8 (sakkizlik) yoki 10 (o'nlik) deb qabul qilinadi. Aynan qaysi radius tanlangani amalga oshirishga bog'liq. ECMAScript 5, 10 (o'nlik) kerak foydalanish mumkin, lekin hamma brauzerlar buni hali qo'llab -quvvatlamaydi. Shu asos bilan, parseInt dan foydalanganda har doim radiusni belgilang.
  3. Agar kirish qatori boshqa qiymat bilan boshlanadigan bo'lsa, radius 10 (o'nlik).

Agar birinchi belgini raqamga aylantirish mumkin bo'lmasa, radius 10dan katta bo'lmasa, parseInt NaN qaytaradi.

Arifmetik maqsadlar uchun NaN qiymati hech qanday radiusdagi raqam emas. ParseInt natijasi NaN ekanligini aniqlash uchun isNaN funktsiyasini chaqirishingiz mumkin. Agar NaN arifmetik amallarga o'tkazilsa, operatsiya natijasi ham NaN bo'ladi.

Raqamni ma'lum bir radiusda o'z satriga aylantirish uchun thatNumber .toString (radix) dan foydalaning.

Misollar

ParseInt dan foydalanish

Quyidagi misollar hammasi 15 ga qaytadi:

ParseInt ("0xF", 16) parseInt ("F", 16) parseInt ("17", 8) parseInt (021, 8) parseInt ("015", 10) // lekin "parseInt (015, 10)" bo'ladi qaytarish 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)

Quyidagi misollar NaNni qaytaradi:

ParseInt ("Salom", 8) // Hech qanday raqam emas parseInt ("546", 2) // 0 yoki 1dan boshqa raqamlar ikkilik radix uchun yaroqsiz

Quyidagi misollar -15 qaytaradi:

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)

Quyidagi misollar 4 -ni qaytaradi:

ParseInt (4.7, 10) parseInt (4.7 * 1e22, 10) // Juda katta son 4 parseIntga aylanadi (0.00000000000434, 10) // Juda kichik son 4 ga aylanadi

Quyidagi misol 224 ni qaytaradi:

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

Radiksiz sakkizlik talqinlar

ECMAScript 3 tomonidan tushkunlikka tushgan va ECMAScript 5 tomonidan taqiqlangan bo'lsa -da, ko'pgina ilovalar 0 dan boshlanadigan raqamli qatorni sakkizlik deb talqin qiladi. Quyidagilar sakkizlik natijaga yoki o'nlik natijaga ega bo'lishi mumkin. Har doim radiusni belgilang bu ishonchsiz xatti -harakatlardan qochish uchun.

ParseInt ("0e0") // 0 parseInt ("08") // 0, chunki "8" sakkizlik raqam emas.

ECMAScript 5 sakkizlik talqinini olib tashlaydi

ParseInt funktsiyasining ECMAScript 5 spetsifikatsiyasi endi 0 belgidan boshlangan satrlarni sakkizlik qiymat sifatida ko'rib chiqishga ruxsat bermaydi. ECMAScript 5 da shunday deyilgan:

ParseInt funktsiyasi mag'lubiyat argumentining mazmunini belgilangan radius bo'yicha talqin qilish orqali belgilanadigan butun sonni chiqaradi. Ipdagi asosiy bo'sh joy e'tiborga olinmaydi. Agar radix aniqlanmagan yoki 0 bo'lsa, bu raqam 0x yoki 0X belgilar juftligidan boshlanganidan tashqari, 10 deb qabul qilinadi, bu holda 16 radiusi qabul qilinadi.

Bu ECMAScript 3 -dan farq qiladi, bu tushkunlikka tushgan, lekin sakkizlik talqiniga ruxsat bergan.

Ko'pgina ilovalar 2013 yildan boshlab bunday xatti -harakatni qabul qilmagan va eski brauzerlar qo'llab -quvvatlanishi kerak. har doim radiusni belgilang.

Qattiqroq tahlil funktsiyasi

Ba'zida butun sonlarni tahlil qilishning qattiqroq usuli foydali bo'ladi.

Oddiy iboralar yordam berishi mumkin:

FilterInt (qiymat) (agar (/^ [-+]? (\ D+ | Cheksizlik) $/. Test (qiymat)) (qaytarish raqami (qiymati)) boshqa (qaytish NaN)) ")) // 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 console.log (filterInt ("1.61803398875")) // NaN

Xususiyatlar

Xususiyat Holat Sharh
ECMAScript birinchi nashri (ECMA-262) Standart Dastlabki ta'rif.
ECMAScript 5.1 (ECMA-262)
Standart
ECMAScript 2015 (6-nashr, ECMA-262)
Ushbu spetsifikatsiyada "parseInt" ta'rifi.
Standart
ECMAScript oxirgi loyihasi (ECMA-262)
Ushbu spetsifikatsiyada "parseInt" ta'rifi.
Qoralama

Brauzer muvofiqligi

Bu sahifadagi muvofiqlik jadvali tuzilgan ma'lumotlardan tuziladi. Agar siz ma'lumotlarga o'z hissangizni qo'shishni xohlasangiz, https://github.com/mdn/browser-compat-data saytiga tashrif buyuring va bizga so'rov yuboring.

GitHub -da muvofiqlik ma'lumotlarini yangilang

Ish stoliMobilServer
ChromeYonFirefoxInternet ExplorerOperaSafariAndroid veb -ko'rinishiAndroid uchun ChromeAndroid uchun FirefoxAndroid uchun OperaIOS -da SafariSamsung InternetNode.js
parseIntChrome to'liq qo'llab -quvvatlash 1Edge to'liq qo'llab -quvvatlash 12Firefox to'liq qo'llab -quvvatlash 1IE to'liq qo'llab -quvvatlash 3Opera to'liq qo'llab -quvvatlash HaSafari To'liq qo'llab -quvvatlash HaWebView Android to'liq qo'llab -quvvatlashi 1Chrome Android to'liq qo'llab -quvvatlash 18Firefox Android to'liq qo'llab -quvvatlash 4Safari iOS To'liq qo'llab -quvvatlash HaSamsung Internet Android to'liq qo'llab -quvvatlash 1.0nodejs To'liq qo'llab -quvvatlash Ha
Parses-nol qatorlari sakkizlik emas, balki o'nlikChrome to'liq qo'llab -quvvatlash 23Edge to'liq qo'llab -quvvatlash 12Firefox to'liq qo'llab -quvvatlash 21IE to'liq qo'llab -quvvatlash 9Opera to'liq qo'llab -quvvatlash HaSafari to'liq qo'llab -quvvatlash 6WebView Android 4.4 to'liq qo'llab -quvvatlanadiChrome Android to'liq qo'llab -quvvatlash 25Firefox Android Full 21 -ni qo'llab -quvvatlaydiOpera Android -ni to'liq qo'llab -quvvatlash HaSafari iOS to'liq qo'llab -quvvatlash 6Samsung Internet Android to'liq qo'llab -quvvatlash Hanodejs To'liq qo'llab -quvvatlash Ha

JavaScript-da satrlarni raqamlarga aylantirish uchun ikkita o'rnatilgan funksiya mavjud: parseFloat () va parseInt ().

parseFloat () argument sifatida raqamli turga uzatiladigan qatorni oladi va floatni qaytaradi. Raqam satr boshida bo'lishi kerak. Agar satrda raqamdan keyin boshqa belgilar bo'lsa, ular kesiladi. Raqamning kasr qismi nuqta bilan ajratilgan holda yozilishi kerak (vergul ajratuvchi sifatida qabul qilinmaydi). Agar parseFloat () satrni o'zgartira olmasa, u NaN qaytaradi.

Bundan tashqari, funktsiya "n sonini x ga 10 ga ko'paytirgan" ni qayta ishlay oladi, bu odatda dasturlashda E harfi orqali yoziladi, masalan: 0.5E6 yoki 0.5E + 6. Daraja ham salbiy bo'lishi mumkin: 0,5E -6, bu 0,5 * 10 ^ -6 yoki 0,5 / 1,000,000 ga teng.

ParseFloat ("" 3.78kg "") // 3.78 parseFloat ("" kg33 "") // NaN parseFloat ("" 0004.111 "") // 4.111 parseFloat ("" 0x66 "") // 0 parseFloat (""). 5 "") // 0,5 parseFloat ("" -. 5 "") // -0,5 parseFloat ("" 0.5e6 "") // 500000 parseFloat ("" 0.03E + 2 "") // 3 parseFloat (" "3E-4" ") // 0.0003 parseFloat (" "-3E-4" ") // -0.0003

ParseInt (string [, radix]) funktsiyasi mag'lubiyatni birinchi argument sifatida qabul qiladi, uni tahlil qiladi va butun sonni (tamsayı turi) qaytaradi. Funktsiya manba qatoridagi raqam yozilgan sanoq tizimini tahlil qilishga harakat qiladi (masalan, o'nlik, sakkizlik yoki o'n oltilik, lekin bular emas). Bundan tashqari, sanoq sistemasini radiusning ikkinchi parametri sifatida aniq ko'rsatish mumkin. Radix parametri 2 dan 36 gacha bo'lgan har qanday sonni olishi mumkin (10 dan yuqori tizimlar ingliz alifbosidan foydalanadi, A dan Z gacha).

Funktsiya 1.5e6 kabi raqamlarni parseFloat () kabi ishlatmaydi.

Iltimos, parseInt () funktsiyasida yashiringan tuzoqlarga tushib qolmaslik uchun quyidagi misollarni o'qing.

ParseInt ("" 25 "") // 25 parseInt ("" - 25 "") // -25 parseInt ("" 45.12 "") // 45 parseInt ("" 045 "", 10) // 45 parseInt ( "" 70 "", 8) // 56 (sakkizlikdagi 70 - o'nlik kasrda 56) parseInt ("" 070 "") // 56 (MUHIM !!! birinchi nol funktsiyani sakkizlik raqam sifatida ajratishga olib keladi) ) parseInt ("" 88 "", 8) // NaN (sakkizlik tizimda 8 ta yo'q) parseInt ("" a1 "") // NaN (MUHIM !!! Funktsiya sonni olti burchakli deb hisoblamaydi) agar siz uni boshlang'ich qatorlarga qo'shmasangiz, 0x) parseInt ("" a1 "", 16) // 161 (bu erda raqamlar tizimi aniq ko'rsatilgan) parseInt ("" 0xa1 "") // 161 (to'g'ri o'n oltilik format) , siz ikkinchi parametrni qoldirishingiz mumkin) parseInt ("" 099 "") // 0 (MUHIM !!! Raqam sakkizlik sifatida talqin qilingan, lekin unda yaroqsiz belgilar mavjud) parseInt ("" 0.5e6 "") // 0 (MUHIM !!! parseFloat sifatida ishlamaydi) parseInt ("" ZZ "", 36) // 1295 parseInt ("" - FF "") // NaN parseInt ("" - FF "", 16) // -255

Agar siz foydalanuvchi kiritadigan matn maydonidan ma'lumotlarni qayta ishlasangiz, har doim ikkinchi radix parametri bilan parseInt () dan foydalaning, bu sizning kodingizni kutilmagan natijalardan himoya qiladi.

Ifodada qanday turdagi o'zgaruvchining ishlatilishining farqi yo'q. Agar ifoda matematik bo'lsa, uning barcha o'zgaruvchilari avtomatik ravishda raqamli deb talqin qilinadi. Agar satrlar qayta ishlansa, ifodaning barcha "ishtirokchilari" satr sifatida qabul qilinadi. Biroq, JavaScript-ni raqamdan raqamga o'tkazish muammosi ancha kengroq kontekstda mavjud.

Satrlarni raqamlarga aylantirish uchun JavaScript usullari

Satrlarni raqamlarga aylantirish usullarining arsenali katta emas, lekin hamma oddiy holatlar uchun etarli. Bu erda JavaScript (ayniqsa, yangi boshlanuvchilar uchun) amaliy misollar bilan oddiydan murakkabgacha bo'lgan yo'l.

Misol to'rt xil chiziqni tasvirlaydi. Chiqishning birinchi blokida har bir o'zgaruvchining turi, funktsiya turi string sifatida belgilanadi. Keyin har bir satr juda oson raqamga aylantiriladi. Chiqishning ikkinchi blokida siz konvertatsiyadan so'ng o'zgaruvchilarning o'zgarishini ko'rishingiz mumkin, ularning turi raqamga aylandi. JavaScript parseFloat konvertatsiyasining misoli ayniqsa ochib beradi: bu "12e + 3" edi, hozir "12000".

Satrni raqamga aylantirishdagi o'zgarishlar muhim bo'lishi mumkin! Ammo faqat birinchi belgilar muhim: ular raqamli bo'lishi kerak. Agar raqamli belgilar bo'lmasa, natija NaN bo'ladi.

Raqamga "aylangan" qatorni teskari konvertatsiyasi har doim ham bir xil satr emas. Bu momentdan raqamli ma'lumotlarni kiritish to'g'riligini tekshirish mumkin.

An'anaviy konversiya usullari

Butun sonlar bor va kasrlar ham bor, mos ravishda JavaScript qatorni raqamga o'zgartiradi:

  • parseInt;
  • parseFloat.

Umumiy holat oddiy matematik ifodada satr yordamida amalga oshiriladi.

Belgilar qatorining oldiga "+" belgisini qo'yish kifoya va agar u raqamni o'z ichiga olgan bo'lsa, unda ifodaning natijasi raqam bo'ladi. O'zgaruvchining qiymati o'zgarishi mumkin, lekin turi har doim o'zgarib turadi: typeof satrni emas, raqamni ko'rsatadi. String ifodasida konvertatsiya qilingan o'zgaruvchidan foydalanish juda boshqacha natijalarga olib kelishi mumkinligini tushunish muhimdir.

Bu nuqtai nazardan yangi boshlanuvchilar uchun JavaScript juda oddiy. PasrseInt usuli yordamida butun sonli konvertatsiya qilish ishini tushunish qiyinroq, chunki u avtomatik ravishda o'nlik kasrlarda ishlaydi, lekin u satrni sakkizlik yoki o'n oltilik sifatida talqin qilishi mumkin. Bundan tashqari, bu holat har doim ham raqamlar tizimini ko'rsatadigan ikkinchi parametrga bog'liq emas.

JavaScript har doim satrni raqamga o'zgartiradi, lekin agar satr boshida bitta raqamli belgi bo'lmasa, natijada NaN bo'ladi.

Hisoblash tizimlari, o'n oltilik (raqam "0x" bilan boshlanadi) va sakkizlik raqamlar (raqam "0" bilan boshlanadi) qanday yozilishi haqida tasavvurga ega bo'lish kerak.

JavaScript parseFloat usulining nuanslarini tushunish uchun haqiqiy sonning matematik yozuvi nima ekanligini tasavvur qilish kifoya.

Konvertatsiya saralanmoqda

JavaScript - bu brauzer tili, chunki u boshqa tillarga qaraganda lotin alifbosi va raqamlarining asosiy to'plamidan tashqaridagi belgilarni tanqid qiladi. Saralash - talab qilinadigan operatsiya. Ma'lumotlarni saralash maqsadida serverga yuborish har doim ham mantiqqa to'g'ri kelmaydi, ishni joyida, brauzerda bajarish osonroq va amaliyroq.

Bu muammoni hal qilish uchun siz satrdagi belgilarni ularning raqamli kodlariga o'zgartirishingiz yoki tartiblangan raqamlar qatoriga harflar va raqamlarni belgilashingiz mumkin. Satrga qo'llaniladigan charCodeAt () usuli iB o'zgaruvchisiga 98 raqamli qiymatini, ya'ni "b" harfining kodini beradi. "A" harfi kodining qiymati 97 ekanligini hisobga olib, siz lotin alifbosidagi barcha harflarning raqamlarini o'sish tartibida kichik va katta harflar bilan olishingiz mumkin. Xuddi shunday rus alifbosidagi harflar uchun.

Raqamlar bo'yicha saralashning o'ziga xos varianti kerakli belgilar to'plamini shakllantirishga imkon beradi. Siz, masalan, kirill va lotin alifbosini "qayta tartibga solishingiz" yoki ularni aralashtirib yozishingiz mumkin bo'lgan harflarni qoldirishingiz, to'plamlarga jadval va bo'sh joy belgilarini qo'shishingiz mumkin.

Stringning yagona sonini shakllantirish

Agar "a" harfining kodi 97 bo'lsa, u holda harf va 97 raqami o'rtasidagi farq alifbodagi harfning yagona raqamini beradi. Stringdagi har bir belgi uchun yagona raqamlarni yig'ish orqali, bu satr uchun yagona raqamni olish qiyin.

Agar satrdagi harfning har bir pozitsiyasiga og'irlik berilgan bo'lsa, masalan, pozitsiya:

  • 0 vazn 1;
  • 1 vazn 10;
  • 2 vazn 100;

keyin satrdagi har bir belgining o'ziga xos sonini topilgan pozitsiyaning og'irligiga ko'paytirish va barcha raqamlarni yig'ish orqali siz noyob raqamni olishingiz va uni asl nusxa bilan yakka tartibda ishlatishingiz mumkin. tor

Stringni raqamga aylantirish teskari, ya'ni raqam bo'yicha har doim asl satrni olish mumkin. Bunday konvertatsiya qilish foydalidir, chunki har qanday operatsiyani kodlash, kirillcha va sayt sahifasining boshqa mahalliy xususiyatlari, tashrif buyurgan mamlakat, kontekstida xavfsiz tarzda bajarish mumkin.

"Rivojlanayotgan" sayt sahifalari tanlovchilari

Ko'pincha sayt sahifalarida qiymatlarni oldindan aytib bo'lmaydi, lekin vaqt o'tishi bilan ular to'ldiriladi. Birinchi ilovada, ma'lumotni kiritish uchun birinchi tashrif buyuruvchiga bo'sh tanlagich mavjud.

Ma'lumotlar satrining har bir yangi tanlovi (har qanday tashrif buyuruvchi tomonidan) raqamga aylanadi, u asl nusxasi bilan birga serverga saqlash uchun yuboriladi. Yangi seans boshlanganda yoki yangi mehmon kelganda, selektor bo'sh qolmaydi. Yuklangan sahifa bo'sh bo'lmagan tanlagich bilan brauzerga keladi.

Tanlovchining har bir yangi qiymati uchun u serverga saqlash uchun faqat bir marta yuboriladi va unga yagona raqamli kod beriladi.

Siz bu muammoni hal qilish uchun JavaScript-dan raqamlar soniga o'tish usulini ishlata olmaysiz. ParseInt va parseFloat odatdagi usullari har xil maqsadlar uchun mo'ljallangan, lekin siz satrni aniq raqamga aylantirish algoritmini o'ylab topishingiz mumkin va uni qaytarib bo'lmaydi. Jadvaldagi har xil belgilar to'plamida aylantirish algoritmi takrorlanmasligi etarli.

Trafikni optimallashtirish va tahlil qilish

Sahifani tuzishda dasturchi katta hajmdagi ma'lumotlardan foydalanadi. Tashrif buyuruvchiga ma'lumot kiritishga ruxsat berish, uning zaif funksionalligi tufayli sayt reytingini pasaytirish va tashrif buyuruvchining hafsalasini pir qilishning yaxshi usuli hisoblanadi.

Ma'lumotlar bloklari uchun JavaScript funktsiyasi ko'rinishida tashrif buyuruvchining harakatlariga voqea boshqaruvchisini tayinlash orqali siz tashrif buyuruvchiga maqsadni aniq belgilash, kerakli ma'lumotlarni topish va kerakli echimni olish imkonini beradigan filtrni shakllantirishingiz mumkin.

Bu erda mag'lubiyatli ma'lumotni konvertatsiya qilish o'zboshimchalik bilan mag'lubiyatga to'g'ri kelishi mumkin va raqamning qismida juda kichik bo'lishi mumkin. Boshqacha qilib aytganda, ishlab chiquvchi JavaScript satrini o'z algoritmiga muvofiq raqamga aylantirishni amalga oshiradi. Tashrif buyuruvchi tushunarli ma'lumotni boshqaradi va ma'lumotlarning minimal miqdori serverga yuboriladi - raqam.

Aniq ma'lumot kontekstida barcha tashrif buyuruvchilar uchun raqamlar to'plamining dinamikasi, AJAX mexanizmi orqali server javobini chaqirgan boshqa JavaScript funktsiyasiga (ishlov beruvchiga emas) barcha tashrif buyuruvchilarga kerakli ma'lumotlarni bir vaqtning o'zida real vaqtda taqdim etish imkonini beradi. . Tizim shunday ishlaydi.

JavaScript satrini raqamga aylantirishning bu varianti onlayn o'yinlar, interaktiv konferentsiyalar, tezkor xabar almashish va boshqalarni ishlab chiqishda juda talabga ega.

Transformatsiyaning asbobli qo'llanilishi

JavaScript va CSS raqamli ma'lumotlarni qayta ishlash kontekstida server ishtirokisiz sahifani ko'rsatilishini boshqarishga imkon beradi. CSS qoidalari rekursiv ravishda substrings sifatida tuzilgan. Odatda parametr - bu raqam va undan keyin bir nechta harflar (masalan, "px", "pt", "em", ...). Parametr - bu qoida osti qatori, qoida - sinf yoki identifikator uslubidagi pastki satr.

JavaScript recursion.Substring.Substring ... kerakli raqamga o'tadi, satrdan raqamga o'zgartiradi, uni o'zgartiradi va kerakli joyga yozadi. Qoidalar avtomatik ravishda o'zgartiriladi. Bu oddiy va qulay, server ishtirokisiz.