Javascript raqamini kichik harflarga aylantirish. JavaScript-da ma'lumotlar turlarini konvertatsiya qilish. Mantiqiy qiymatlarga aylantirish

JavaScript - bu dinamik ma'lumotlarni yozishga ega til. Bu shuni anglatadiki, qiymatlar bir xil o'zgaruvchiga yozilishi mumkin har xil turlari, va o'zgaruvchining turi o'zgaradi. Bunday xatti-harakatlar ko'pincha o'zgaruvchilarning turli xatti-harakatlarini unutishga imkon beradi turli xil turlari, lekin bu xususiyatni hali ham eslab qolish kerak. Buni quyidagi misol bilan ko'rsatamiz.

console.log(sum(1, 2)); // 3 (bu yerda hammasi joyida) console.log(sum(1, "2")); // 12 (va bu erda unchalik emas)

Misoldan ko'rinib turibdiki, funktsiya so'm agar uning argumentlaridan kamida bittasi raqam bo'lmasa, o'zini noto'g'ri tutadi. Gap shundaki, raqamni satrga "qo'shish" paytida raqam satrga aylanadi va u ikkinchi operand bilan birlashtiriladi (yopishtiriladi).

Bunday asoratlarni oldini olish uchun siz skriptni bajarish paytida o'zgaruvchining turini bilib olishingiz va uning harakatini sozlashingiz yoki o'zgaruvchilar turlarini diqqat bilan kuzatib borishingiz mumkin.

operator turi

Bu unar operator operand sifatida mutlaqo istalgan qiymatni oladi va uning turini satr o'zgaruvchisida qaytaradi.

JavaScript quyidagi ma'lumotlar turlariga ega:

// 1.) ob'ekt console.log (typeof ( ) );

// ob'ekt var p = ( x: 1 , y: 3 );

console.log (p turi); // obyekt // 2.) funksiya funksiyasi sayHello() ( console.log ("Salom!" ); ) console.log (turi sayHello) ;// funktsiya // 3.) string console.log ("JavaScript" turi) ;

Cast

Dasturlashda tipni quyish deganda bir turdagi o'zgaruvchining qiymatini boshqa turdagi qiymatga aylantirish tushuniladi.
Ko'pincha bunday konvertatsiya dasturchining nazoratisiz sodir bo'ladi. Buni funksiya bilan misolda ko'rish mumkin so'm. Turning o'zgarishi asl turdagi o'zgaruvchi ustidagi operatsiya natijasi noaniq bo'lganda sodir bo'ladi. Masalan, songa satr qo‘shish natijasida nima bo‘lishini aniq aytish mumkin emas, lekin ikkita sonni qo‘shish amali yaqqol ko‘rinib turadi va bu holda raqamni qatorga qisqartirish mantiqan to‘g‘ri keladi.

Satrni raqamga aylantirish

Ba'zan dasturchining o'zi o'zgaruvchining turini unga ma'lum operatsiyalarni qo'llash orqali o'zgartirishi mumkin. Masalan, satrdagi amallarni oshirish yoki kamaytirish uni raqamga qisqartiradi.

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

Shuni ta'kidlash kerakki, satrni raqamga aylantirishning bu usuliga murojaat qilishning hojati yo'q, chunki uning o'qilmasligi va ravshan emas. JS da bu vazifa uchun o'rnatilgan funksiyalar mavjud parseInt Va parseFloat. Birinchi argument sifatida ular raqamga aylantirilishi kerak bo'lgan qatorni, ixtiyoriy ikkinchi argument sifatida esa birinchi argument sifatida o'tkazilgan qatorda raqam yozilgan sanoq tizimining asosini oladi. Agar ikkinchi argument ko'rsatilmagan bo'lsa, u holda satrda o'nlik sanoq sistemasidagi raqam mavjud deb taxmin qilinadi.

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

var a = parseInt("10" ) ;

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

// a = 10; typeof a: raqam 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)

Funktsiyalarning ikkinchi parametri sifatida parseInt Va parseFloat Sanoq tizimining asosini belgilashingiz mumkin.

a = parseInt("10" , 8 );

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

// a = 8 a = parseInt("010" , 10 ); parseInt Va 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

Agar qiymat funktsiyaga tegishli satrda bo'lsa

birinchi parametr sifatida qabul qilinadi, raqamli harf emas, u holda bu funktsiyalarni bajarish 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

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

Raqamli konvertatsiya

Raqamga o'tkazish matematik amallarni bajarishda va turdagi quyma (==, !=) bilan taqqoslash operatsiyasini bajarishda va qiymat bilan sodir bo'ladi. yolg'on va bo'sh massiv 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 satrga o'tkaziladi.

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

// 1,2,34 funktsiya sum(a, b) ( a + b; qaytaring; ) console.log (sum + 5 ) ;

// funksiya summasi(a, b)(a + b; qaytaring)5 parseInt, parseFloat Va // a = NaN a = parseFloat("raqam emas" ) ;.

var arr = ; console.log(arr + 4); // 1,2,34 funksiya summasi(a, b)(a + b; qaytish) console.log(sum + 5); // funksiya summasi(a, b)(a + b; qaytaring)5

Ko'rib turganingizdek, js-da yashirin turdagi konvertatsiya qilish har doim ham aniq emas, shuning uchun siz aniq turdagi konvertatsiya qilish uchun funktsiyalardan foydalanib, undan qochishingiz kerak, masalan,

Ana xolos. Har doimgidek, sizga omad!

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

parseFloat() argument sifatida raqamli turga aylantiriladigan satrni oladi va float raqamini qaytaradi. Raqam satr boshida ko'rsatilishi kerak. Agar raqamdan keyin qatorda 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 ni qaytaradi.

parseInt(string[, radix]) funksiyasi birinchi argument sifatida satrni oladi, uni tahlil qiladi va butun sonni qaytaradi (turi butun son). Funktsiya manba qatoridagi raqam yozilgan sanoq tizimini tahlil qilishga harakat qiladi (masalan, o'nlik, sakkizlik yoki o'n oltilik - lekin nafaqat bular). Sanoq tizimini ikkinchi parametr radikali sifatida o'tkazish orqali ham aniq belgilashingiz mumkin. Radix parametri 2 dan 36 gacha bo'lgan istalgan raqamni olishi mumkin (10 dan yuqori tizimlarda A dan Z gacha ingliz alifbosining harflari ishlatiladi).

Funktsiya parseFloat() kabi 1.5e6 kabi raqamlarni qayta ishlamaydi.

parseInt() funksiyasi ishida yashiringan xatolarga duch kelmaslik uchun quyidagi misollarni o'qing.

ParseInt(""25"") // 25 parseInt(""-25"") // -25 parseInt(""45.12"") // 45 parseInt(""045"",10) // 45 parseInt( ""70"",8) // 56 (70 sakkiztalik o'nli sonda 56) parseInt(""070"") // 56 (MUHIM!!! nol birinchi navbatda funktsiyani satrni sakkizlik son sifatida tahlil qilishga olib keladi. ) parseInt(" "88"",8) // NaN (sakkizlik tizimda 8 raqami yo'q) parseInt(""a1"") // NaN (MUHIM!!! Standart funktsiya raqamni shunday ko'rsatmaydi. agar u bosh satrlarga qo'shilmagan bo'lsa, o'n oltilik 0x) parseInt(""a1"",16) // 161 (sanoq tizimi bu erda aniq ko'rsatilgan) parseInt(""0xa1"") // 161 (to'g'ri o'n oltilik raqam formati , ikkinchi parametrni ko'rsatish shart emas) parseInt( ""099"") // 0 (MUHIM!!! Raqam sakkizlik sifatida ko'rib chiqiladi, lekin yaroqsiz belgilar mavjud) parseInt(""0.5e6"") / / 0 (MUHIM!!! parseFloat kabi ishlamaydi) parseInt("" ZZ"",36) // 1295 parseInt(""-FF"") // NaN parseInt(""-FF"",16) / / -255

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

The parseInt() funktsiya satr argumentini tahlil qiladi va belgilangan radiksning butun sonini qaytaradi (matematik raqamlar tizimidagi asos).

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 klonlang va bizga tortish so'rovini yuboring.

Sintaksis

parseInt (string, radix)

Parametrlar

string Tahlil qilinadigan qiymat. Agar bu argument satr bo'lmasa, u ToString abstrakt operatsiyasi yordamida bittaga aylantiriladi. Ushbu argumentdagi asosiy bo'shliq e'tiborga olinmaydi. radix Majburiy emas. 2 dan 36 gacha boʻlgan butun son, bu satrning radikalini (matematik sanoq sistemalaridagi asos) ifodalaydi. Ehtiyot bo'ling - bu shunday emas

standart 10!

Radix taqdim etilmaganda nima sodir bo'lishini batafsilroq tushuntiradi.

Qaytish qiymati

Berilgan satrdan ajratilgan butun son.

Agar radiks 11 dan kichik bo'lsa va birinchi bo'sh bo'lmagan belgini raqamga aylantirib bo'lmasa, NaN qaytariladi.

Tavsif

parseInt funktsiyasi o'zining birinchi argumentini satrga aylantiradi, bu qatorni tahlil qiladi, so'ngra butun son yoki NaN ni qaytaradi.

Agar NaN bo'lmasa, qaytarish qiymati belgilangan radixda raqam sifatida qabul qilingan birinchi argument bo'lgan butun son bo'ladi. (Masalan, 10 dan iborat radikal oʻnlik sondan, 8 ta sakkizlikdan, 16 ta oʻn oltilik sondan va hokazo.)

10 dan yuqori radikallar uchun ingliz alifbosidagi harflar 9 dan katta raqamlarni bildiradi. Masalan, o'n oltilik sonlar uchun (baza 16) A dan F gacha. Agar parseInt ko'rsatilgan radixda raqam bo'lmagan belgiga duch kelsa, u unga va barcha keyingi belgilarga e'tibor bermaydi va shu nuqtaga qadar tahlil qilingan butun son qiymatini qaytaradi. parseInt raqamlarni butun qiymatlarga qisqartiradi. Etakchi va orqadagi bo'shliqlarga ruxsat beriladi. Chunki ba'zi raqamlar o'z satrlarini ko'rsatishda e belgisidan foydalanadi (masalan. radix Majburiy emas. 2 dan 36 gacha boʻlgan butun son, bu satrning radikalini (matematik sanoq sistemalaridagi asos) ifodalaydi. Ehtiyot bo'ling - bu shunday 6.022e23

6.022 × 10 23 uchun), raqamlarni kesish uchun parseInt-dan foydalanish juda katta yoki juda kichik raqamlarda ishlatilganda kutilmagan natijalar beradi. parseInt kerak

Math.floor() o'rniga ishlatiladi.

  1. parseInt aniq ikkita belgini tushunadi: + ijobiy uchun va - salbiy uchun (ECMAScript 1dan beri). Bu bo'sh joy olib tashlanganidan keyin tahlil qilishning dastlabki bosqichi sifatida amalga oshiriladi. Hech qanday belgilar topilmasa, algoritm quyidagi bosqichga o'tadi; aks holda, u belgini olib tashlaydi va satrning qolgan qismida raqamni ajratishni ishga tushiradi.
  2. Agar radix aniqlanmagan , 0 yoki aniqlanmagan bo'lsa, JavaScript quyidagilarni qabul qiladi: Agar kirish satri "0x" yoki "0X" (nol, keyin kichik yoki katta X) bilan boshlansa, radix 16 deb qabul qilinadi va satrning qolgan qismi o'n oltilik raqam sifatida tahlil qilinadi. foydalanish mumkin, lekin hali hamma brauzerlar buni qo'llab-quvvatlamaydi. Shu sababli, parseInt dan foydalanganda har doim radisni belgilang.
  3. Agar kirish satri har qanday boshqa qiymat bilan boshlansa, radikal 10 (o'nlik) ga teng.

Agar birinchi belgi raqamga aylantirilmasa, agar radikal 10 dan katta bo'lmasa, parseInt NaN ni qaytaradi.

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

Raqamni ma'lum bir radiksdagi satr harfiga aylantirish uchun thatNumber .toString(radix) dan foydalaning.

Misollar

parseInt dan foydalanish

Quyidagi misollarning barchasi 15 ni qaytaradi:

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

Quyidagi misollarning barchasi NaN ni qaytaradi:

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

Quyidagi misollarning barchasi -15 ni 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 misollarning barchasi 4 ni qaytaradi:

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

Quyidagi misol 224 ni qaytaradi:

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

Radikssiz sakkizlik talqinlar

ECMAScript 3 tomonidan to'xtatilgan va ECMAScript 5 tomonidan taqiqlangan bo'lsa-da, ko'p ilovalar bosh 0 dan boshlanadigan raqamli qatorni sakkizlik sifatida izohlaydi. Quyidagi natija sakkizlik yoki o'nlik natijaga ega bo'lishi mumkin. Har doim radiksni belgilang bu ishonchsiz xatti-harakatlardan qochish uchun.

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

ECMAScript 5 sakkizlik talqinni olib tashlaydi

parseInt funksiyasining ECMAScript 5 spetsifikatsiyasi endi ilovalarga 0 belgidan boshlanadigan satrlarni sakkizlik qiymat sifatida ko‘rib chiqishga ruxsat bermaydi. ECMAScript 5 quyidagilarni ta'kidlaydi:

parseInt funksiyasi belgilangan radiksga muvofiq satr argumenti mazmunini talqin qilish orqali belgilangan butun son qiymatini hosil qiladi. Satrdagi bosh bo'sh joy e'tiborga olinmaydi. Agar radix aniqlanmagan bo'lsa yoki 0 bo'lsa, raqam 0x yoki 0X belgilar juftligi bilan boshlangan hollar bundan mustasno, u 10 deb qabul qilinadi, bu holda radikal 16 ga teng deb qabul qilinadi.

Bu ECMAScript 3 dan farq qiladi, bu tavsiya etilmaydi, ammo sakkizlik talqinga ruxsat beriladi.

Ko'pgina ilovalar 2013 yildan boshlab bu xatti-harakatni qabul qilmagan va eski brauzerlar qo'llab-quvvatlanishi kerakligi sababli, har doim radikalni belgilang.

Qattiqroq tahlil qilish funktsiyasi

Ba'zan butun sonlarni tahlil qilishning qattiqroq usuliga ega bo'lish foydalidir.

Oddiy iboralar yordam berishi mumkin:

Funktsiya filterInt(qiymat) (agar (/^[-+]?(\d+|Infinity)$/.test(qiymat)) ( Qaytish Raqam(qiymat) ) else ( Qaytish 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 konsoli .log (filterInt("1.61803398875")) // NaN

Texnik xususiyatlari

Spetsifikatsiya Holat Izoh
ECMAScript 1-nashr (ECMA-262) Standart Dastlabki ta'rif.
ECMAScript 5.1 (ECMA-262)
Standart
ECMAScript 2015 (6-nashr, ECMA-262)
Ushbu spetsifikatsiyadagi "parseInt" ta'rifi.
Standart
ECMAScript oxirgi loyihasi (ECMA-262)
Ushbu spetsifikatsiyadagi "parseInt" ta'rifi.
Qoralama

Brauzer mosligi

Ushbu sahifadagi muvofiqlik jadvali tuzilgan ma'lumotlardan yaratilgan. Agar siz maʼlumotlarga oʻz hissangizni qoʻshmoqchi boʻlsangiz, iltimos, https://github.com/mdn/browser-compat-data manziliga tashrif buyuring va bizga tortishish soʻrovini yuboring.

GitHub-da muvofiqlik ma'lumotlarini yangilang

Ish stoliMobilServer
ChromeChetFirefoxInternet ExplorerOperaSafariAndroid veb-ko'rinishiAndroid uchun ChromeAndroid uchun FirefoxAndroid uchun OperaIOS uchun 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-quvvatlash 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
Boshlovchi nol qatorlar sakkizlik emas, o'nlikdirChrome 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 to'liq qo'llab-quvvatlash 4.4Chrome Android to'liq qo'llab-quvvatlash 25Firefox Android to'liq qo'llab-quvvatlash 21Opera Android 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

Salom aziz o'quvchilar. Bugun men qanday qilib aylantirilishini yozaman javascript raqamga qator. Bu raqam funktsiyasi yordamida amalga oshiriladi, endi men uning ishlatilishini misol bilan ko'rsataman.
Shuningdek, ushbu maqolaning video versiyasini ko'rishni taklif qilaman:

Ma'lumotlar turlari haqida bir oz

Ma'lumki, javascriptda raqamli va qatorli ma'lumotlar turlari mavjud. Keling, raqamlarni saqlaydigan ikkita o'zgaruvchini yaratishga harakat qilaylik va natijani ekranda ko'rsatamiz.

Var a = 5; var b = 12; hujjat.yozish(a + b);

Natija qanday bo'ladi? 17, bu brauzer bizga ko'rsatgan narsadir. Shunday qilib, bu raqamli ma'lumotlar, shuning uchun brauzer uni muvaffaqiyatli qo'shdi. Keling, yana ikkita o'zgaruvchini yaratamiz, ularda biz bir xil qiymatlarni qo'yamiz, lekin tirnoq ichida. Eslatib o'taman, javascriptdagi barcha satrlar tirnoq ichida yozilgan.

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

Endi brauzer bizning ma'lumotlarimizni satr deb hisoblaydi va agar biz ularni qo'shsak, ikkita qator qo'shiladi va biz 512 ni olamiz, agar raqamlar qo'shilsa, bu to'g'ri natija emas, lekin ikkita qatorni birlashtirsak to'g'ri bo'ladi.

Javascriptda satrni raqamga qanday aylantirish mumkin?

Bu erda hamma narsa oddiy, keling, keyingi ikkita o'zgaruvchini yaratamiz, unda biz c va d o'zgaruvchilari tomonidan ko'rsatilgan qiymatni yozamiz, lekin ularni Number usuli orqali o'tkazamiz:

Var e = Raqam(c); var f = Number(d); hujjat.write(e + f);

Agar siz hozir ushbu qo'shish natijasini ekranda ko'rsatishga harakat qilsangiz, u 17 ni ko'rsatadi. Buning sababi, bizning usulimiz muvaffaqiyatli ishladi va satrni raqamga aylantirdi. Shuni ta'kidlashni istardimki, agar siz buni shunday yozsangiz:

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

Keyin ekranda 512 ko'rsatiladi, chunki satrlar va raqamlarni qo'shganda DOIM natija satrga aylantiriladi. Agar siz chiziqli tanaffus qo'shmoqchi bo'lsangiz va hali ham to'g'ri natijani saqlamoqchi bo'lsangiz, hamma narsani ikkita yoki bitta qatorga yozishingiz mumkin:

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

Agar siz raqamlarni qavs ichiga qo'ysangiz, ular satrlarga aylantirilmaydi va o'z xususiyatlarini muvaffaqiyatli saqlab qoladi. Bu mening bugungi qisqa maqolam. Umid qilamanki, JavaScript siz uchun biroz aniqroq bo'ldi.

Tanlov