JavaScript-da ma'lumotlarni qayta ishlash.

Kontaktlar / Google Play

topshirish: 1.11.2015

Golovna

yangilanib turing

Ko'pincha bitta ma'lumotni boshqasiga o'tkazish zarurati paydo bo'ladi.

Masalan: Var soni1 = "46";:

var number2 = "4";

var natija = raqam1 + raqam2; console.log(natija);:

//464

Qatorlarni, aniqrog'i, raqamlarning qatorga o'xshash ko'rinishlarini ifodalash haqoratli. Va natijada biz 50 raqamini emas, balki 464 seriyasini olib qo'yamiz. Aks holda, agar ular hali ham qo'shilsa, qo'shilsa va tub sonlar bilan shug'ullansa, yomon bo'lar edi. Va bu erda biz transformatsiya operatsiyalarini bajarishimiz mumkin.

Qatorni raqamga o'zgartirish uchun funksiya to'xtab qoladi

parseInt()

Var soni1 = "46"; var number2 = "4"; var natija = parseInt(1-raqam) + parseInt(2-raqam); console.log(natija);

// 50

Olingan raqamlardagi qatorlarni qayta tashkil qilish uchun funksiya to'xtab qolgan parseFloat():

Var soni1 = "46.07";

var number2 = "4,98";

var natija = parseFloat(1-raqam) + parseFloat(2-raqam); console.log(natija);, o'zgarishlar bilan har qanday vikorist operatsiyada:

JavaScript

Qo'shimcha prompt() funksiyasi uchun brauzer qiymat kiritish imkoniyati bilan dialog oynasini ko'rsatadi.

Ushbu funktsiyaning yana bir argumenti hisobga olinadigan ma'noni ko'rsatadi.

Biroq, prompt() funksiyasi qatorni aylantiradi.

Shuning uchun, bu qator ustida amallarni bajarish uchun uni raqamga aylantirishimiz kerak.

Brauzerda sahifani ochgandan so'ng, bizdan depozit miqdorini kiritishdan oldin so'raladi: Keyin video uchun shunga o'xshash bildirishnomalar paydo bo'ladi. Va nihoyat, dastur ma'lumotlarni oladi, uni raqamga o'zgartiradi va yakuniy variantni tanlaydi.

U

JavaScript ma'nosi Ular bir turdan ikkinchisiga erkin (aniq va bilvosita) qo'shilishi mumkin. Masalan, agar operator qiymatlarni bitta turga qaytarsa ​​va qiymatlarni boshqa turga o'tkazsa, tarjimon avtomatik ravishda uni kerakli turga aylantirishga harakat qiladi: Console.log(10 + "mashinalar"); // "10 ta mashina".:

Raqam bilvosita qatorga aylantiriladi console.log("7" * "4");

// 28. Ikki qator bilvosita raqamlarga aylantiriladi

Bilvosita qayta yaratilgan - bu erda tarjimon avtomatik ravishda qayta yaratilgan turlarni tanlaydi, ya'ni dasturchi ishtirokisiz.
Yavne qayta yaratilishi - qayta yaratish tugagach, dasturchi o'zgaradi. Ko'rinishidan, qayta yaratish boshqa narsa deb ataladi turi bo'yicha ko'rsatma
Console.log("7" * "4");
// 28. Yashirin konversiya console.log(Number("7") * Number("4"));
// 28. Ochilgan qayta yaratish
Quyidagi jadvalda JavaScript qiymatni bir turdan ikkinchisiga qanday o'zgartirishi tasvirlangan.
Bo'sh o'rtalar qayta qurish kerak bo'lmagan holatlarni ko'rsatadi:
0
Ahamiyati
Oʻzgartirildi:
Qator
Raqam
Bulyovo
Oʻzgartirildi:
Ob'ekt
aniqlanmagan
1
0
null
"aniqlanmagan"
"null"
"1.2"
NaN
"-10"
"+10"
"011"
yolg'on
0
1.2
Bo'sh o'rtalar qayta qurish kerak bo'lmagan holatlarni ko'rsatadi:
-10
10
11
255
Ahamiyati
Bulyovo
Bulyovo
Bulyovo
Bulyovo
Bulyovo
yolg'on
kechirim turi xato
kechirim turi xato
rost
"to'g'ri"
"yolg'on"
yangi mantiqiy (to'g'ri)
yangi mantiqiy (noto'g'ri)
0
-0
Bo'sh o'rtalar qayta qurish kerak bo'lmagan holatlarni ko'rsatadi:
"" (bo'sh qator)
"bir"
3
"0"
"0"
"0xff"
rost
yangi string("")
"3"
Ahamiyati
Ahamiyati
Ahamiyati
Bulyovo
Bulyovo
yolg'on
yangi satr ("1,2")
yangi satr ("bir")
yangi satr ("-10")
yangi satr ("+10")
yangi satr ("011")
yangi satr ("0xff")
Cheksizlik

- Cheksizlik
"NaN"
"Cheksizlik"
"-Cheksizlik"

yangi raqam(0)

""
"9"
yangi raqam(0)
yangi raqam(-0)

yangi raqam(0)
0
9
Bo'sh o'rtalar qayta qurish kerak bo'lmagan holatlarni ko'rsatadi:
yangi raqam (NaN)
Bulyovo

Bulyovo
Bulyovo
Bulyovo
yolg'on

yangi raqam (cheksizlik) yangi raqam (-Infinity) yangi raqam(3)

Aniq konvertatsiya qilish uchun funksiyalarni almashtirish operatorlaridan foydalanish mumkin.

Masalan, + operatorining operandlaridan biri qator bo'lsa, boshqa operand ham qatorga aylantiriladi.

Birlik operator + o'z operandini raqamga aylantiradi.

Bir xil operator!

  • operandni mantiqiy qiymatiga aylantiradi va uni o'zgartiradi. Bularning barchasi amalda erishish mumkin bo'lgan turlarni o'zgartirishning yangi usullarining paydo bo'lishiga olib keldi:
  • X + "" // String (x) + x bilan bir xil // Raqam (x) bilan bir xil.
  • Siz x - 0 ni ham kiritishingiz mumkin !! x // i mantiqiy (x) bilan bir xil
  • Raqamlarning o'zgarishi

Number() funktsiyasi quyidagi qoidalar ortidagi qiymatlarni o'zgartiradi: Mantiqiy ma'nolar:

  • rost va noto'g'ri 1 va 0 ga doimiy ravishda aylantiriladi. Raqamlar o'zgarishsiz aylanadi. Null qiymati 0 ga aylantiriladi.
  • Aniqlanmagan qiymat NaN ga aylantiriladi.
  • Qatorlar uchun
  • maxsus qoidalar
  • Agar qatorda + yoki - belgisi bo'lgan yoki belgisiz bir nechta raqam bo'lsa, u har doim butunlay qayta yaratiladi.
  • o'ninchi raqam

.

Boshlovchi nollar e'tiborga olinmaydi, masalan, "0011" 11 ga aylantiriladi.

Agar qator suzuvchi nuqtali + yoki - belgisi bo'lgan yoki ishorasi bo'lmagan raqam bo'lsa, u suzuvchi nuqtali haqiqiy songa aylantiriladi (kob nollari ham e'tiborga olinmaydi).

  • Seriya o'n oltilik formatdagi son bo'lgani uchun u butun o'ninchi raqamga aylantiriladi.
  • Agar qator bo'sh bo'lsa, u 0 ga aylanadi.
  • Agar qator oldingi variantlardan boshqacha joylashtirilsa, u NaN ga aylanadi.

Ob'ektlar uchun valueOf() usuli chaqiriladi va u aylanadigan qiymatlar oldinga siljish qoidalari yordamida avtomatik ravishda qayta yaratiladi.

Agar bu o'zgartirish natijasida NaN bo'lsa, toString() usuli chaqiriladi va raqam qatorlarini o'zgartirish qoidalari o'rnatiladi.

  • Birlik operatorlar + va - Number() funksiyasi bilan bir xil qoidalarga amal qiladi.
  • Mantiqiy qiymatlarga aylantirish
  • Boolean() funktsiyasi qiymatlarni mantiqiy ekvivalentiga aylantiradi:

Transformatsiya natijasida olingan qiymatlar noto'g'ri qiymatlarni beradi: undefined, null, 0, -0, NaN, "".

Ob'ektdagi oddiy qiymatlarni o'zgartirish uchun Boolean() , Number() , String() konstruktorlaridan foydalaning:

Var oNum = Yangi raqam(3);

var oStr = new String("1.2");

var oBool = new Boolean(true);

ogohlantirish (oNum turi);

// "ob'ekt" ogohlantirishi (oStr turi);

// "ob'ekt" ogohlantirishi (oBool turi); // "ob'ekt" Oddiy ma'noga ega ob'ektlarni qayta tashkil etish

Barcha ob'ektlar ikkita transformatsiya usuliga ega: toString() va valueOf().

toString() usuli ob'ektning satr qiymatini aylantiradi.

Fikrlash uchun u hech narsani orqaga qaytarmaydi:

Ogohlantirish ((x: 1).toString());

  • // ""
  • Bunday turdagi harakatlar ko'proq kuchayadi

maxsus versiyalar

  • toString() usuli.
  • Masalan, massivning toString() usuli uning barcha elementlarini qatorlarga aylantiradi va keyin ularni bir qatorga birlashtiradi va ularni orasiga kiritadi:
  • Alert(.toString());

ToString() va valueOf() usullari o'qish va yozish uchun mavjud, shuning uchun ularni qayta baholash va konvertatsiya qilish vaqtida aylantirish uchun aniq belgilash mumkin:

Var obj = ();

obj.toString = function() ( "ob'ekt" ni qaytarish; );

alert("Tse" + obj);

// "Ushbu ob'ekt"

Virus qaysi turdagi o'zgarishlardan foydalanishi farq qilmaydi. Matematik ifoda sifatida barcha o'zgarishlar avtomatik ravishda raqamlar sifatida talqin qilinadi. Qatorlar hosil bo'lganda, barcha "ishtirokchilar" qatorlar sifatida ko'rinadi.

Biroq, JavaScript-da "raqamlar qatorini" qayta tiklash vazifasi ancha kengroq kontekstda.

Raqamlar qatorlarini o'zgartirish uchun JavaScript usullari

Raqamlardagi qatorlarni qayta joylashtirish usullarining arsenali katta emas, lekin barcha oddiy holatlar uchun etarli.

Bu erda JavaScript (ayniqsa, yangi boshlanuvchilar uchun) amaliy ilovalarda oddiydan murakkabgacha bo'lgan yo'ldir.

  • Dumba bir nechta turli qatorlarni tasvirlaydi.
  • Birinchi odam boshqa teri turiga ega

O'zgaruvchan funktsiyalar

Typeof string sifatida aniqlanadi.

Keyin teri qatori oddiygina raqamga aylanadi.

JavaScript-da birinchi navbatda qator raqamga aylantiriladi, agar satr boshida muhim sonli raqamli belgilar bo'lsa, natija NaN bo'ladi.

Sanoq sistemalari, o'n oltilik sonlarni (son "0x" dan boshlanadi) va o'nlik sonlarni (son "0" dan boshlanadi) yozish usullarini o'rganish kerak.

Ishning nuanslarini tushunish uchun JavaScript parseFloat usuli nutq raqamining matematik belgilarini tushunishi kerak.

Saralash usuli bilan qayta ishlash

JavaScript brauzer tili bo'lib, u lotin alifbosi va raqamlarining asosiy to'plamidan tashqaridagi belgilarga qaraganda boshqa tillar uchun muhimroqdir.

Saralash - so'ralgan operatsiya.

Ma'lumotlarni saralash uchun serverga o'tkazish hech qachon yaxshi fikr bo'lmasligi mumkin, bu esa robotga brauzerda kirish uchun oddiyroq va amaliyroqdir.

Ushbu vazifani bajarish uchun siz seriya belgilarini ularning raqamli kodlariga aylantirishingiz yoki tartiblangan raqamlar ketma-ketligidagi harflar va raqamlarni tanib olishingiz mumkin.

Bir qator bilan chegaralangan charCodeAt() usuli "b" harf kodiga 98 o'zgaruvchining iB raqamli qiymatini belgilaydi. Shifokorlar uchun, agar "a" harf kodi 97 dan katta bo'lsa, siz lotin alifbosining barcha harflarining raqamlarini kichik va katta to'plamlarning ortib borayotgan tartibida tanlashingiz mumkin. Rus alifbosining harflariga o'xshash.

Raqamlar bo'yicha saralashning kuchli varianti kerakli belgilar to'plamini shakllantirishga imkon beradi.

  • Masalan, kirill va lotin alifbolarini "ko'chirish" yoki ularni harflar yozish uchun qo'shimcha vakolatlarni olib tashlash, matn terish uchun yorliqlar va bo'shliqlar qo'shish usuli bilan aralashtirish mumkin.
  • Noyob qator raqamini shakllantirish
  • Agar "a" harfining kodi 97 ga teng bo'lsa, harf va 97 raqami o'rtasidagi farq

noyob raqam

alifbodagi harflar.

Har bir satr belgisining noyob raqamlarini ko'rib chiqayotganda, ushbu qatorning noyob raqamiga e'tibor berish muhimdir.

Ko'pincha muammo sayt sahifalarida selektorlarni yaratishda bo'ladi, ularning qiymatlarini oldindan kiritish mumkin emas, aks holda vaqt o'tishi bilan yoqimsiz hid paydo bo'ladi.

Birinchi statsionar bo'sh selektor ma'lumotni kiritish uchun birinchi kirishga kirish mumkin.

Selektorga kiritilgan ma'lumotlarning har bir yangi qatori (yoki har qanday kiritish) raqamga aylantiriladi, u asl nusxasi bilan birga saqlash uchun serverga yuboriladi.

Yangi ish sessiyasi boshlanganda yoki yangi drayver kelganda, selektor endi bo'sh emas. Brauzerga yaroqsiz selektor bilan kirmoqchi bo'lgan tomon. Selektorning har bir yangi qiymati saqlash uchun serverga bir marta yuborilganda, unga bir marta noyob raqamli kod beriladi.

Eng oliy sharaf uchun

JavaScript usuli qator y soni vikorystuvati mumkin emas. parseInt va parseFloatning asosiy usullari boshqacha tarzda ishlab chiqilgan, ammo siz ketma-ketlikni teskari emas, balki bir ma'noda raqamga aylantirish uchun algoritm yaratishingiz mumkin.

O'zgartirish algoritmi ketma-ket turli xil belgilar to'plamida takrorlanmasligi kifoya.

Trafikni optimallashtirish va tahlil qilish

Sahifani shakllantirish jarayonida nashriyot quyidagi ma'lumotlar qiymatlarini o'z ichiga oladi.

Ma'lumot kiritish uchun bir nechta variantga ruxsat bering - garniy usuli zaif funksionalligi va tomoshabinlarning hafsalasi pir bo'lganligi sababli sayt reytingini pasaytiring.

JavaScript funksiyasidagi qidiruv tizimini bosish orqali siz aniq belgilash, kerakli ma'lumotlarni topish va qarorni o'chirish imkonini beruvchi filtrni shakllantirishingiz mumkin.

Raqamli ma'lumotlarni qayta ishlash kontekstida JavaScript va CSS server ishtirokisiz sahifa ko'rinishini ko'rsatishga imkon beradi.

CSS qoidalari obuna va rekursiv bo'lishi uchun yaratilgan.

Parametrga nom bering - keyin bir qator harflar (masalan, "px", "pt", "em", ...).

Parametr qoidaga muvofiq, qoida esa identifikator sinfining uslubiga mos keladi.

JavaScript recursion.Substring.Substring... kerakli raqamni topadi, tartibni raqamga aylantiradi, uni o'zgartiradi va kerakli joyga qayta yozadi.

Qoida avtomatik ravishda o'zgartiriladi.

Bu shunchaki qo'lda, serverning hech qanday qismisiz.

Javascriptda qatorni raqamga aylantirishning ikkita asosiy usuli mavjud. Buning bir usuli - uni tahlil qilish, ikkinchisi - uning turini raqamga o'zgartirish. Boshqa turdagi barcha fokuslar (masalan, unary plyus) qatorlar turiga nisbatan aniq afzalliklarga ega. Raqam funksiyasi bilan ham xuddi shunday qilishingiz mumkin. Sintaktik

Var parsed = parseInt("97", 10);

ParseInt va parseFloat raqamlar qatorini tahlil qilish uchun foydali bo'lgan ikkita funktsiyadir.

Sintaktik tahlil tanib bo'lmaydigan belgilar bilan chalkashib ketadi, bu qatorlarni sintaktik tahlil qilish uchun foydali bo'lishi mumkin, masalan, "92px", lekin bu ham xavfsiz emas, chunki fragmentlar sizga hech qanday umid bermaydi. natomisti " NaN ni aylantiramiz, chunki qator raqamdan boshlanmaydi. Qator boshidagi bo'sh joy e'tiborga olinmaydi.

Bu tahlil usullariga qarab o'zgaradi (ammo, avvalgidek, bo'shliqlarni e'tiborsiz qoldiradi).

Bu qat'iyroq: agar siz butun qatorni tushunmasangiz, pastki qism NaN ni aylantiradi, keyin uni 97px kabi qatorlar uchun tanlay olmaysiz.

Sizga Raqam o'ramining ob'ekti emas, balki ibtidoiy raqam kerak bo'lganligi sababli, ni qo'ymaganingizga ishonch hosil qiling.

Shubhasiz, raqamga aylantirish butun son emas, balki float bo'lishi mumkin bo'lgan qiymatni beradi, shuning uchun agar siz butun sonni xohlasangiz, uni o'zgartirishingiz kerak. Pul topishning ko'plab usullari mavjud: Var rounded = Math.floor(Raqam("97.654"));

// Boshqa variantlar: Math.ceil, Math.round var fixed = Number("97.654").toFixed(0);

// Kesilgandan ko'ra yumaloqlangan var bitwised = Raqam ("97.654") | 0; // katta raqamlar uchun foydalanmang Har qanday bitli operator (bu erda men bit yo'nalishini yarataman yoki siz oldingi qatorda yoki Bitshift kabi pastki so'rovni ham yaratishingiz mumkin) 32 bitli butun sonning qiymatlarini o'zgartiradi va ularning aksariyati butun songa aylantiriladi. belgisi yo'q.

Hurmatni qaytaring, bu nima

Katta raqamlarni qidirishingizni xohlamaymiz

.

Agar butun sonni 32 bitda ifodalash mumkin bo'lmasa, u tugatiladi.

~~"3000000000,654" === -1294967296 // Bu bir xil Raqam("30000000000.654")|0 "30000000000.654" >>> 0 === 300000000000, 0 bilan 6, lekin katta = 6 //6 => s

uchun

parseFloat() argument sifatida raqamli turga aylantirilishi kerak bo'lgan qatorni oladi va raqamni float turiga o'zgartiradi.

Raqam qatorning qulog'iga qo'llanilishi mumkin.

Agar raqamdan keyin qatorda boshqa belgilar mavjud bo'lsa, ular paydo bo'ladi.

Raqamning kasr qismi nuqta orqali yozilishi mumkin (koma ajratuvchi sifatida qaralmaydi).

Agar parseFloat() qatorni orqaga qaytara olmasa, u NaN ni aylantiradi.

Xuddi shu funktsiya "10 ga x darajasiga ko'paytirilgan n raqamini" qayta ishlashi mumkin, chunki dasturlashda uni E harfi orqali yozish odatiy holdir, masalan: 0,5E6 yoki 0,5E+6.

Qadam salbiy bo'lishi mumkin: 0,5E-6, bu 0,5*10^-6 yoki 0,5/1000000 ga teng.

Agar siz kiritgan matn maydonidan ma'lumotlarni tahlil qilayotgan bo'lsangiz, kodingiz nomuvofiq natijalar bermasligiga ishonch hosil qilish uchun parseInt() ni boshqa radix parametri bilan ishlating.

Midnight Commander - bu Linux (shuningdek freebsd, unix) uchun fayl boshqaruvchisi bo'lib, u Nortonga juda o'xshaydi...