ХОНХ

Энэ мэдээг чамаас өмнө уншсан хүмүүс бий.
Шинэ нийтлэлүүдийг хүлээн авахын тулд бүртгүүлээрэй.
Имэйл
Нэр
Овог
Та Хонхыг хэрхэн уншихыг хүсч байна вэ?
Спам байхгүй
Тодорхойлолт

Math.random() арга нь 0-ээс 1 хүртэлх псевдо санамсаргүй тоог буцаана.

Псевдо санамсаргүй тоо нь 0 (хамааруулсан) -аас 1 (онцгой) хооронд үүсгэгддэг, өөрөөр хэлбэл буцаасан тоо нь тэг байж болох ч үргэлж нэгээс бага байх болно.

Хөвөгч цэгийн тоог бүхэл тоо болгон дугуйлахын тулд та жишээ нь Math.floor() аргыг ашиглаж болно.

Синтакс Math.random() Буцах утга
  • 0 (хамааруулсан) -аас 1 (онцгой) хүртэлх хөвөгч цэгийн тоо.

Math.random() аргыг ихэвчлэн тодорхой хязгаарт псевдо санамсаргүй тоо үүсгэхэд ашигладаг. Жишээлбэл, бид 50-аас 100 (хамааруулсан) хүртэлх тоог авах хэрэгтэй. Үүнийг хийхийн тулд бид дараах кодыг бичих хэрэгтэй болно.

Document.write(Math.floor(Math.random() * 51 + 50));

Бидний жишээ хэрхэн ажилладаг, яагаад энэ бичлэгийн хэлбэрийг ашигладаг талаар нарийвчлан авч үзье. Юуны өмнө бид хүссэн мужаас олж авсан хамгийн бага утгыг зааж өгөх хэрэгтэй, бидний жишээн дээр энэ нь 50 тоо юм. Одоо бид ямар нэгэн байдлаар санамсаргүй тоог олж авах хэрэгтэй бөгөөд үүнийг 50 тоогоор нэмэхэд нийт дүнгээс хэтрэхгүй байх болно. тоо 100. Математикаас мэдэж байгаачлан үл мэдэгдэх гишүүнийг олохын тулд нийлбэрээс мэдэгдэж буй гишүүнийг хасах замаар хийдэг. 100 - 50: бид 50-ын зөрүүг авна. Одоо энэ тоо бидэнд тохирох эсэхийг шалгахын тулд Math.random() аргаар буцаасан боломжит хамгийн бага ба хамгийн их тоогоор үржүүлнэ. Бид хамгийн багадаа 0.004704564176082244 * 50 = 0.2..., дээд тал нь 0.9999999999746223 * 50 = 49.9-ийг үржүүлэв... Тэгээд бид зөрүүг хамгийн их боломжтой санамсаргүй тоогоор үржүүлэхэд үр дүн нь бүхэл тооны нэг хэсгийг өгч байгааг бид харж байна. шаардлагатай хэмжээнээс бага. Нөхцөл байдлыг засахын тулд бид зүгээр л нэг нэгжийг 50 дээр нэмэх хэрэгтэй, өөрөөр хэлбэл. 50 + 1 = 51, одоо үр дүнгийн тоог аргын дагуу буцаасан хамгийн их боломжит тоогоор үржүүлбэл 50.9 тоог авах болно ... - энэ нь бидэнд хэрэгтэй зүйл бөгөөд 50.9 + 50 тоог нэмсний дараа бид 100.9-ийг авна. . Тоог бүхэл тоо болгохын тулд Math.floor() аргыг ашиглана. Тиймээс шаардлагатай тоог олж авах томъёо нь дараах байдалтай байна: max - min + 1. Дээрх жишээг дахин бичье.

Var max = 100, min = 50; document.write(Math.floor(Math.random() * (макс - мин + 1) + мин));

Энэ томьёо нь санамсаргүй тоог ямар мужид авах шаардлагатайг урьдчилан мэдэхгүй үед ялангуяа ашигтай байдаг.

Жишээ баримт бичгийн гарчиг

1-ээс 10 хүртэлх псевдо санамсаргүй тоо.

var x; for(var i = 0; i< 10; i++) { x = document.getElementById("test"); x.innerHTML += Math.floor(Math.random() * 10 + 1) + "
"; }

Массиваас утгыг давтахгүйгээр санамсаргүй байдлаар сонгох "алгоритм". Бүр тодруулбал, JS сургалтынхаа нэг хэсэг болгон би үүнийг анги, нэрийг давтахгүйгээр сонгодог RPG бүлэг баатруудыг (варвар, илбэчин, хулгайч, баатар, тахилч) бүтээхэд ашигласан.

Энэ зарчим нь маш энгийн, гэхдээ энэ нь над шиг JS-ийн эхлэгчдэд хэрэгтэй байж болох юм. RPG-тэй холбогдох нь зөвхөн бэлгэдлийн шинж чанартай - одоо би профайлаа маркетингаас IT болгон өөрчлөхийг идэвхтэй оролдож байна (миний сэтгэл оршдог гэдгийг ойлгосон), тоглоомын хэлбэрээр дадлага хийх нь илүү сонирхолтой юм.

1. Загвар үүсгэх Бүлэг тэмдэгтүүдийг үүсгэхээсээ өмнө тэдгээрийн үеийн загвар гаргах хэрэгтэй. Үнэндээ энд байна:

GamePlayer функц (n, r, l, p) ( this.nick = n; this.role = r; this.level = l; this.portrait = p; )
Үнэн хэрэгтээ энэ функц нь дуудагдах хувьсагчдаас тэмдэгтүүдийг үүсгэх болно. Жишээлбэл:

Var player1 = new GamePlayer("Power Ranger","barbarian","64","img/barbarian.jpg")
Одоо player1 хувьсагч нь тодорхой хөрөг зураг бүхий 64 түвшний Power Ranger варварыг хадгалдаг; бид хуудасны үндсэн хэсэгт play1.nick, player1.level гэх мэт параметрүүдийг харуулах боломжтой.

GamePlayer-ийн утгууд (n, r, l, p) нь функцэд өгөгдлийг хүлээн авах, дарааллаар нь хариуцдаг. Хэрэв жишээн дээр бид n ба r-ийг солих юм бол хүчирхэг байгаль хамгаалагч Барбар тоглогч 1-д үлдэх бөгөөд энэ нь даалгаварт төдийлөн тохирохгүй байна.

2. Массивыг тодорхойлох Тэмдэгтүүдийг өөрсдөө үүсгэхгүй, бараг санамсаргүй байдлаар үүсгэхийн тулд (гарчигт амласанчлан) бид эдгээр ижил тэмдэгтүүдийн параметрүүдийг авах массив хэрэгтэй болно. Дээр дурдсанчлан бид зөвхөн 4 параметртэй байна: тэмдэгтийн нэр, анги, түвшин, хөрөг.

Нэрийн массив:

Var playerNames = ["Арчаагүй туулай", "Халуун аймшигт унага", "Хүслийн хэрэгсэл", "Төстэй сахиусан тэнгэр", "Амтат хөлдөөсөн", "Мөнгөн хүнд вомбат", "Төөрсөн Пума", "Амин Панда", "Өнхрөх нар" , "Ган урсах", "Залуу үнэг", "Шаардлагагүй хэрцгий сайн дурын ажилтан", "Chipmunk Cult", "Индиго гөлөг"];
Цаашид явж, 2-3 бүрэлдэхүүн хэсгээс нэр үүсгэх боломжтой боловч ийм сайжруулалтын алгоритм нь шинэ зүйл агуулаагүй (ижил санамсаргүй байдал), дараа нь сургалтын үйл явцыг улам хүндрүүлнэ.

Ангид зориулсан массив:

Var playerRoles = ["варвар", "илбэчин", "хууран мэхлэгч", "баатар", "тахилч"];
Бүх зүйл яг адилхан ойлгомжтой. Хэд хэдэн мөрүүдээс бид хуудсан дээр харуулах утгуудыг сонгох болно.

Түвшингийн массив:

Энэ жишээн дээр би бүх намын гишүүдийг 60-70 түвшинд байлгахыг хүссэн. Гэхдээ нөхцөл байдал өөрчлөгдөж болзошгүй тул 0-ээс 80 хүртэлх түвшний массив үүсгэх шаардлагатай байсан бөгөөд үүнээс шаардлагатай утгыг сонгох хэрэгтэй. Гогцоонд үүсгэсэн:

Var playerLevels =; for (i = 0;i $(maxGeneratedValue)."); ) else if (max< min) { throw new Error("max (${max}) must be >= min ($(мин)."); ) else if (min === max) ( мин буцах; ) үүсгэхийг зөвшөөрөх; do ( үүсгэсэн = crypto.getRandomValues(new Uint32Array(1)); ) while (үүсгэсэн > maxUnbiased ); мин + буцаана (% боломжтойҮр дүнгийн утгыг үүсгэсэн); ); console.log(randomInteger(-8, 8)); // -2 console.log(randomInteger(0, 0)); // 0 console.log(randomInteger (0, 0xFFFFFFFF)); // 944450079 console.log(randomInteger(-1, 0xFFFFFFFF)); // Алдаа: -1-ээс 4294967295 хүртэлх 4294967296-н хүрээ нь > 4294967295. Ar-294967295. ().map(n => randomInteger(8, 12))); //

Ихэнхдээ JavaScript дахь тооцоолол нь бидний хүссэн үр дүнг өгдөггүй. Мэдээжийн хэрэг, бид тоонуудын тусламжтайгаар хүссэн бүхнээ хийж чадна - дээш эсвэл доошоо дугуйлж, мужийг тохируулах, шаардлагагүй тоонуудыг тодорхой тооны аравтын бутархайгаар таслах, энэ бүхэн таны ирээдүйд энэ тоогоор юу хийхийг хүсч байгаагаас хамаарна. Яагаад дугуйлах шаардлагатай вэ? JavaScript-ийн сонирхолтой талуудын нэг нь бүхэл тоог хадгалахгүй, бид шууд хөвөгч цэгтэй тоогоор ажилладаг. Энэ нь олон бутархай утгыг хязгаарлагдмал тооны аравтын бутархайгаар илэрхийлэх боломжгүйтэй хослуулан JavaScript дээр дараах үр дүнг авч болно.

0.1 * 0.2; > 0.020000000000000004 0.3 - 0.1 > 0.19999999999999998
Практикийн хувьд энэ алдаа нь хамаагүй, манай тохиолдолд бид квинтиллон хэсгийн алдааны тухай ярьж байгаа боловч энэ нь зарим хүмүүсийн урмыг хугалж магадгүй юм. Мөн бид валют, хувь эсвэл файлын хэмжээг харуулсан тоонуудтай ажиллахад хачирхалтай үр дүнд хүрч чадна. Эдгээр алдааг засахын тулд бид үр дүнг дугуйлж чаддаг байх хэрэгтэй бөгөөд аравтын бутархайн нарийвчлалыг тохируулахад хангалттай.

Тоонуудыг дугуйлах нь практик хэрэглээтэй тул бид тодорхой муж доторх тоог удирдах боломжтой, жишээ нь бид зөвхөн аравтын бутархайтай ажиллахын оронд утгыг хамгийн ойрын бүхэл тоо хүртэл дугуйлахыг хүсдэг.

Аравтын бутархайг тайрахдаа toFixed эсвэл toPrecision аргыг ашиглана. Аль аль нь үр дүнд хэдэн чухал тоо (өөрөөр хэлбэл, тоонд ашигласан нийт цифрийн тоо) эсвэл аравтын бутархай (аравтын бутархайн дараах тоо) байх ёстойг тодорхойлсон ганц аргументыг авдаг.
  • Хэрэв аргумент toFixed()-д тодорхойлогдоогүй бол энэ нь анхдагчаар тэг байх ба энэ нь 0 аравтын бутархай гэсэн үг бөгөөд аргумент хамгийн ихдээ 20 утгатай байна.
  • Хэрэв toPrecision-д аргумент өгөхгүй бол тоо нь хөндөгдөөгүй үлдэнэ
  • randNum = 6.25; randNum.toFixed(); > "6" Math.PI.toPrecision(1); > "3" randNum = 87.335; randNum.toFixed(2); > "87.33" рандНум = 87.337; randNum.toPrecision(3); > "87.3"
    toFixed() болон toPrecision() аргууд хоёулаа тоо биш харин үр дүнгийн мөрийн дүрслэлийг буцаана. Энэ нь бөөрөнхий утгыг randNum-ээр нийлбэрлэхдээ тоонуудын нийлбэр биш мөрүүдийн холболтыг үүсгэнэ гэсэн үг юм:

    randNum = 6.25; let rounded = randNum.toFixed(); // "6" console.log(randNum + дугуйрсан); > "6.256"
    Хэрэв та үр дүнг тоон өгөгдлийн төрөл болгохыг хүсвэл parseFloat ашиглах хэрэгтэй:

    randNum = 6.25; let rounded = parseFloat(randNum.toFixed(1)); console.log(дугуйрсан); > 6.3
    Ховор тохиолдлоос бусад тохиолдолд 5-ын утгыг дугуйрсан болохыг анхаарна уу.

    toFixed() болон toPrecision() аргууд нь ашигтай байдаг, учир нь тэдгээр нь зөвхөн бутархай хэсгийг таслахаас гадна аравтын бутархайг нэмэх боломжтой бөгөөд энэ нь валюттай ажиллахад тохиромжтой:

    WholeNum = 1 let dollarsCents = wholeNum.toFixed(2); console.log(dollarscents); > "1.00"
    Хэрэв бүхэл тоо нь нарийвчлалаас их байвал toPrecision үр дүнг шинжлэх ухааны тэмдэглэгээнд гаргана гэдгийг анхаарна уу:

    num = 123.435 num.toPrecision(2); > "1.2e+2"

    Аравтын тоогоор бөөрөнхийлсөн алдаанаас хэрхэн зайлсхийх вэ Зарим тохиолдолд toFixed болон toPrecision нь 5-ын утгыг доош болон дээш болгон дугуйруулна:

    numTest = 1.005; numTest.toFixed(2); > "1.00"
    Дээрх тооцооллын үр дүн 1 биш харин 1.01 байх ёстой. Хэрэв та үүнтэй төстэй алдаа гарахаас зайлсхийхийг хүсвэл бид тооцоололд экспоненциал тоо ашигладаг Жак Л Мурын санал болгосон шийдлийг ашиглаж болно.

    Функцийн дугуй(утга, аравтын бутархай) ( Буцах Тоо(Math.round(утга+"e"+аравтын тоо)+"e-"+аравтын тоо); )
    Одоо:

    Дугуй(1.005,2); > 1.01
    Хэрэв та дээр үзүүлсэнээс илүү бат бөх шийдлийг хүсч байвал MDN руу очиж болно.

    Машины эпсилон дугуйлах Аравтын бутархай тоог дугуйлах өөр аргыг ES6-д нэвтрүүлсэн. Машины эпсилон бөөрөнхийлөлт нь хоёр хөвөгч цэгийн тоог харьцуулахдаа боломжийн алдаа гаргадаг. Бөөрөнхийлөлгүйгээр харьцуулалт нь дараахтай төстэй үр дүнг гаргаж болно.

    0.1 + 0.2 === 0.3 > худал
    Хүчинтэй харьцуулалт гаргахын тулд бид Math.EPSILON-г функцдээ ашигладаг.

    epsEqu(x, y) функц ( Math.abs(x - y) буцаана< Number.EPSILON * Math.max(Math.abs(x), Math.abs(y)); }
    Функц нь хоёр аргументыг авдаг: эхнийх нь одоогийн тооцоо, хоёр дахь нь хүлээгдэж буй үр дүн юм. Энэ нь хоёрын харьцуулалтыг буцаана:

    EpsEqu(0.1 + 0.2, 0.3) > үнэн
    Орчин үеийн бүх хөтчүүд ES6 математикийн функцийг аль хэдийн дэмждэг боловч IE 11 гэх мэт хөтчүүдэд дэмжлэг үзүүлэхийг хүсвэл polyfills ашиглана уу.

    Бутархай хэсгийг таслах Дээр үзүүлсэн бүх аргуудыг аравтын бутархай тоо болгон дугуйлж болно. Нэг тоог хоёр аравтын бутархай болгон бууруулахын тулд эхлээд 100-аар үржүүлээд дараа нь гарсан үр дүнг 100-д ​​хуваах хэрэгтэй.

    Таслагдсан функц (тоо) ( буцаах Math.trunc(num * 100) / 100; ) truncated(3.1416) > 3.14
    Хэрэв та аравтын бутархайн тоонд тохирох аргыг тохируулахыг хүсвэл битийн давхар үгүйсгэлийг ашиглаж болно.

    Функц таслагдсан(num, decimalPlaces) ( numPowerConverter = Math.pow(10, decimalPlaces); буцаана ~~(num * numPowerConverter)/numPowerConverter; )
    Одоо:

    randInt = 35.874993; таслагдсан(randInt,3); > 35.874

    Хамгийн ойрын тоо руу бөөрөнхийлөх Аравтын тоог хамгийн ойрын тоо хүртэл дээш эсвэл доош дугуйлахын тулд Math.round() ашиглана уу:

    Math.round(4.3) > 4 Math.round(4.5) > 5
    Математикийн дүрмийн дагуу "хагас утга" 0.5-ыг дугуйрсан болохыг анхаарна уу.

    Хамгийн ойрын бүхэл тоо хүртэл дугуйлах Хэрэв та үргэлж доошоо дугуйлахыг хүсвэл Math.floor ашиглана уу:

    Math.floor(42.23); > 42 Math.floor(36.93); > 36
    Бөөрөнхийлөлт нь бүх тоо, түүний дотор сөрөг тоонд тохирно гэдгийг анхаарна уу. Хязгааргүй олон давхрагатай тэнгэр баганадсан барилгыг төсөөлөөд үз дээ, түүний дотор доод түвшний шал (сөрөг тоог илэрхийлдэг). Хэрэв та 2-оос 3-ын хоорондох хамгийн доод түвшний цахилгаан шатанд байгаа бол (энэ нь -2.5 гэсэн утгыг илэрхийлнэ) Math.floor таныг -3 руу хүргэх болно:

    Math.floor(-2.5); > -3
    Хэрэв та ийм нөхцөл байдлаас зайлсхийхийг хүсч байвал орчин үеийн бүх хөтчүүдэд (IE/Edge-ээс бусад) дэмжигдсэн Math.trunc-г ашиглаарай:

    Math.trunc(-41.43); > -41
    MDN дээр та хөтчүүд болон IE/Edge дээр Math.trunc-д дэмжлэг үзүүлэх polyfill-г олох болно.

    Хамгийн ойрын бүхэл тоо хүртэл бөөрөнхийлөх Нөгөө талаас, хэрэв та үргэлж дугуйлах шаардлагатай бол Math.ceil-г ашиглаарай. Дахин хэлэхэд хязгааргүй цахилгаан шатыг санаарай: тоо сөрөг эсэхээс үл хамааран Math.ceil үргэлж "дээш" байх болно:

    Math.ceil(42.23); > 43 Math.ceil(36.93); > 37 Math.ceil(-36.93); > -36

    Шаардлагатай тоо хүртэл дээш/доош бөөрөнхийлөх Хэрэв бид 5-ын хамгийн ойрын үржвэрт дугуйлахыг хүсвэл тоог 5-д хувааж, дугуйлж, дараа нь ижил хэмжээгээр үржүүлэх функцийг үүсгэх нь хамгийн хялбар арга юм.

    roundTo5(num) функц ( Math.round(num/5)*5; буцаана)
    Одоо:

    RoundTo5(11); > 10
    Хэрэв та өөрийн утгыг үржвэр болгон дугуйлахыг хүсвэл бид анхны утга болон үржвэрийг дамжуулах илүү ерөнхий функцийг ашиглана:

    roundToMultiple(тоо, олон) функц ( Math.round(num/multiple)*олон; буцаана)
    Одоо:

    Анхны дугаар = 11; олон = 10 байг; roundToMultiple(эхний дугаар, олон); > 10;

    Муж дахь тоог засах Бид муж доторх x-ийн утгыг авахыг хүсдэг олон тохиолдол байдаг. Жишээлбэл, бидэнд 1-ээс 100-ын хооронд утга хэрэгтэй байж болох ч бид 123 гэсэн утгатай болсон. Үүнийг засахын тулд бид min (тоонуудын хамгийн багыг буцаана) болон max (ямар ч олонлогийн хамгийн томыг буцаана) ашиглаж болно. тоонуудын). Бидний жишээнд 1-ээс 100 хүртэлх хүрээ байна:

    LowBound = 1 гэж үзье; highBound = 100 байг; numInput = 123; let clamped = Math.max(lowBound, Math.min(numInput, highBound)); console.log(хавчуулсан); > 100;
    Дахин хэлэхэд бид Даниел X. Мурын санал болгосон шийдлийг ашиглан үйлдлийг дахин ашиглаж, бүх зүйлийг функцэд багтааж болно.

    Number.prototype.clamp = function(min, max) ( return Math.min(Math.max(энэ, мин), max); );
    Одоо:

    NumInput.clamp(lowBound, highBound); > 100;

    Гауссын бөөрөнхийлөлт Гауссын бөөрөнхийлөлт буюу банкирын дугуйралт нь тэгш тоо руу ойртуулахыг хэлнэ. Энэ дугуйлах арга нь статистикийн алдаагүйгээр ажилладаг. Тим Даун илүү сайн шийдлийг санал болгосон:

    Функц gaussRound(num, decimalPlaces) ( let d = decimalPlaces || 0, m = Math.pow(10, d), n = +(d ? num * m: num).toFixed(8), i = Math.floor (n), f = n - i, e = 1e-8, r = (f > 0.5 - e && f< 0.5 + e) ? ((i % 2 == 0) ? i: i + 1) : Math.round(n); return d ? r / m: r; }
    Одоо:

    GaussRound(2.5) > 2 gaussRound(3.5) > 4 gaussRound(2.57,1) > 2.6
    CSS дахь аравтын тоо:

    JavaScript нь HTML элементүүдийн байршлын зураглалыг бий болгоход ихэвчлэн ашиглагддаг тул хэрэв бид элементүүдийнхээ аравтын бутархай утгыг үүсгэвэл юу болох бол гэж та гайхаж магадгүй юм.

    #хайрцаг (өргөн: 63.667731993px; )
    Сайн мэдээ гэвэл орчин үеийн хөтчүүд блок загварын аравтын бутархай утгыг, түүний дотор хувь эсвэл пикселийн нэгжийг хүндэтгэх болно.

    Эрэмбэлэх Маш олон удаа бид зарим элементүүдийг эрэмбэлэх шаардлагатай байдаг, жишээлбэл, бидэнд олон тооны тоглоомын бичлэг байгаа бөгөөд тэдгээр нь тоглогчийн зэрэглэл буурах дарааллаар зохион байгуулагдах ёстой. Харамсалтай нь стандарт sort() арга нь гайхалтай хязгаарлалттай байдаг: энэ нь нийтлэг англи үгтэй сайн ажилладаг боловч тоо, өвөрмөц тэмдэгтүүд эсвэл том үсгээр бичигдсэн үгтэй тулгарах үед тэр даруй задардаг. Цагаан толгойн дарааллаар эрэмбэлэх Массивыг цагаан толгойн дарааллаар эрэмбэлэх нь энгийн ажил юм шиг санагдаж байна.

    Let fruit = ["butternut squash", "appricot", "cantaloupe"]; fruit.sort(); > "гүйлс", "цөцгийн хулуу", "канталуп"]
    Гэсэн хэдий ч, элементүүдийн аль нэг нь том үсгээр бичигдсэн үед бид асуудалтай тулгардаг:

    Let fruit = ["butternut squash", "appricot", "cantalope"]; fruit.sort(); > "канталупа", "гүйлс", "цөцгийн хулуу"]
    Учир нь анхдагч байдлаар ангилагч нь Юникод дээр дүрслэгдсэн эхний тэмдэгтийг харьцуулдаг. Юникод бол платформ, программ, хэл харгалзахгүйгээр аливаа тэмдэгтийн өвөрмөц код юм. Жишээлбэл, хэрэв та кодын хүснэгтийг харвал "a" тэмдэгт нь U+0061 утгатай (0х61 арван арван тоот), "C" тэмдэгт нь Юникод өмнө ирдэг U+0043 (0x43) кодтой байна. "a" тэмдэгтээс илүү хүснэгт.

    Холимог эхний үсэг агуулсан массивыг эрэмбэлэхийн тулд бид бүх элементүүдийг түр зуур жижиг үсгээр хөрвүүлэх, эсвэл localeCompare() аргыг ашиглан эрэмбэлэх дарааллаа зарим аргументтай тодорхойлох шаардлагатай. Дүрмээр бол ийм тохиолдолд давтан ашиглах функцийг нэн даруй үүсгэх нь дээр.

    функц alphaSort(arr) ( arr.sort(функц (a, b) ( буцаах a.localeCompare(b, "en", ("мэдрэмж": "суурь")); )); ) let fruit = ["butternut squash" "," чангаанз "," Cantaloupe "]; alphaSort (жимс) >
    Хэрэв та массивыг цагаан толгойн урвуу дарааллаар эрэмбэлэхийг хүсвэл функц дэх a ба b-ийн байрлалыг солиход л хангалттай.

    функц alphaSort(arr) ( arr.sort(функц (a, b) ( буцах b.localeCompare(a, "en", ("мэдрэмж": "суурь")); )); ) let fruit = ["butternut squash" "," чангаанз "," Cantaloupe "]; alphaSort(жимс) > ["Cantaloupe", "butternut squash", "appricot"]
    Энд localeCompare нь аргументтай ашиглагддаг гэдгийг тэмдэглэх нь зүйтэй бөгөөд бид үүнийг IE11+ дэмждэг гэдгийг санах хэрэгтэй, IE-ийн хуучин хувилбаруудын хувьд бид үүнийг аргументгүйгээр ашиглаж болно, жижиг үсгээр:

    Function caseSort(arr) ( arr.sort(function (a, b) ( return a.toLowerCase().localeCompare(b.toLowerCase()); )); ) let fruit = ["butternut squash", "apricot", "Cantaloupe"]; caseSort(жимс) > ["гүйлс", "цөцгийн хулуу", "канталуп"]

    Тоон ангилах Энэ бүхэн нь тоглоомын бичлэгийн массивын тухай дээр дурдсан жишээнд хамаарахгүй. Зарим тоон массивын хувьд эрэмбэлэх нь маш сайн ажилладаг боловч зарим үед үр дүн нь урьдчилан таамаглах боломжгүй байж болно:

    Өндөр оноо = гэж үзье; highScores.sort(); >
    Гол нь sort() арга нь толь бичгийн харьцуулалтыг гүйцэтгэдэг: энэ нь тоонуудыг мөр болгон хувиргаж, юникод хүснэгтийн тэмдэгтүүдийн дарааллаар тухайн мөрийн эхний тэмдэгтийг тааруулж дахин харьцуулалт хийнэ гэсэн үг юм. . Тиймээс бид эрэмбэлэх дарааллаа дахин тодорхойлох хэрэгтэй.

    Өндөр оноо = гэж үзье; highScores.sort(функц(a,b) ( буцаах a - b; )); >
    Дахин хэлэхэд тоонуудыг урвуу дарааллаар эрэмбэлэхийн тулд функц дэх a ба b-ийн байрлалыг солино.

    JSON-тэй төстэй бүтцийг эрэмбэлэх Эцэст нь хэлэхэд, хэрэв бид тоглоомын бичлэгийн массив хэлбэрээр дүрслэгдсэн JSON-тэй төстэй өгөгдлийн бүтэцтэй бол:

    Оноо = [ ( "нэр": "Даниел", "оноо": 21768 ), ( "нэр": "Майкл", "оноо": 33579 ), ( "нэр": "Алисон", "оноо": 38395 ) ];
    ES6+ дээр та сум функцийг ашиглаж болно:

    Scores.sort((a, b) => b.score - a.score));
    Энэ дэмжлэггүй хуучин хөтчүүдийн хувьд:

    Scores.sort(функц(a, b) (а.оноо - b.оноо буцаана));
    Таны харж байгаагаар JavaScript дээр эрэмбэлэх нь нэлээд ойлгомжгүй зүйл бөгөөд эдгээр жишээнүүд амьдралыг ямар нэгэн байдлаар хөнгөвчлөх болно гэж найдаж байна.

    Эрчим хүчний функцтэй ажиллах Экспоненциал гэдэг нь натурал тоог дахин дахин үржүүлсний үр дүнд анх тодорхойлогдсон үйлдлүүд бөгөөд a-ийн квадрат язгуур нь квадрат байх үед нь a өгдөг тоо юм. Бид эдгээр функцийг өдөр тутмын амьдралдаа математикийн хичээлд, тэр дундаа талбай, эзлэхүүнийг тооцоолох, тэр ч байтугай физик загварчлалд ашиглах боломжтой.

    JavaScript-д тэжээлийн функцийг Math.pow() хэлбэрээр төлөөлдөг бөгөөд шинэ ES7 стандартад " * * " гэсэн шинэ экспоненциал операторыг нэвтрүүлсэн.

    Тоог n-р зэрэгт хүргэхийн тулд Math.pow() функцийг ашиглана уу. Энд эхний аргумент нь зэрэглэл рүү нэмэгдэх тоо, хоёр дахь аргумент нь илтгэгч байна:

    Math.pow(3,2) > 9
    Тэмдэглэгээний энэ хэлбэр нь 3 квадрат буюу 3 × 3 гэсэн үг бөгөөд энэ нь 9 гэсэн үр дүнд хүргэдэг. Мэдээж өөр жишээг өгч болно:

    Math.pow(5,3); > 125
    Өөрөөр хэлбэл, 5 куб буюу 5 × 5 × 5 нь 125-тай тэнцүү байна.

    ECMAScript 7 нь JavaScript-ийн дараагийн хувилбар бөгөөд зарчмын хувьд бид шинэ санал болгож буй экспонентацийн операторыг ашиглаж болно - * *, тэмдэглэгээний энэ хэлбэр нь илүү тодорхой байж болно:

    3 ** 2 > 9
    Одоогийн байдлаар энэ операторын дэмжлэг нэлээд хязгаарлагдмал тул үүнийг ашиглахыг зөвлөдөггүй.

    Эрчим хүчний функц нь янз бүрийн нөхцөлд ашигтай байж болно. Нэг цагийн секундын тоог тооцоолох энгийн жишээ: Math.pow (60,2).

    Квадрат болон шоо язгуур Math.sqrt() болон Math.cbrt() нь Math.pow()-ийн эсрэг байна. Бидний санаж байгаагаар a-ийн квадрат язгуур нь квадрат үед a өгдөг тоо юм.

    Math.sqrt(9) > 3
    Үүний зэрэгцээ, a-ийн шоо язгуур нь шоо болгон өсгөхөд а өгдөг тоо юм.

    Math.cbrt(125) > 5
    Math.cbrt() нь JavaScript-ийн техникийн үзүүлэлтэд саяхан нэвтэрсэн тул зөвхөн Chrome 38+, Firefox болон Opera 25+, Safari 7.1+ орчин үеийн хөтчүүдэд дэмжигддэг. Та Internet Explorer энэ жагсаалтад байхгүй байгааг анзаарах болно, гэхдээ та MDN дээр polyfill олох болно.

    Жишээлбэл, бид эдгээр функцүүдийн аль нэгэнд бүхэл бус утгыг ашиглаж болно:

    Math.pow(1.25, 2); > 1.5625 Math.cbrt(56.57) > 3.8387991760286138
    Энэ нь сөрөг аргументын утгыг ашиглах үед маш сайн ажилладаг гэдгийг анхаарна уу:

    Math.pow(-5,2) > 25 Math.pow(10,-2) > 0.01
    Гэсэн хэдий ч, энэ нь квадрат язгуурт ажиллахгүй:

    Math.sqrt(-9) > NaN
    Математикийн шинжилгээнээс бид төсөөллийн тоо нь сөрөг тоонуудын квадрат язгуурыг хэлдгийг мэднэ. Энэ нь биднийг төвөгтэй тоонуудтай ажиллах өөр техник рүү хөтөлж магадгүй, гэхдээ энэ бол өөр түүх юм.

    Та тоонуудын квадрат ба шоо язгуурыг олохын тулд Math.pow() дээр бутархайг ашиглаж болно. Квадрат язгуур нь 0.5-ын илтгэгчийг ашигладаг:

    Math.pow(5, 0.5); // = Math.sqrt(5) = 5 ** (1/2) > 2.23606797749979
    Гэсэн хэдий ч хөвөгч цэгийн гажуудлаас болж та зөв үр дүнг тааж чадахгүй.

    Math.pow(2.23606797749979,2) > 5.000000000000001
    Ийм нөхцөлд та тэмдгүүдийг тооноос нь хасах эсвэл ямар нэг утга руу дугуйлах хэрэгтэй болно.

    Зарим хүмүүс үл мэдэгдэх шалтгаанаар JavaScript дээр Math.pow() функцийг ерөнхийд нь тоонуудын экспоненциал функц болох Math.exp()-тай андуурдаг. Тайлбар: Англи хэл дээр "exponent" нь "exponent" гэж орчуулагддаг тул энэ нь англи хэлээр ярьдаг хүмүүст илүү тохиромжтой байдаг ч индекс, хүч гэх мэт илтгэгчийн өөр нэр байдаг.

    Математикийн тогтмолууд JavaScript дээр математиктай ажиллах нь олон тооны суурилагдсан тогтмолуудын ачаар хялбар болсон. Эдгээр тогтмолууд нь Math объектын шинж чанарууд юм. Тогтмолуудыг CamelCase тэмдэглэгээ биш харин том үсгээр бичдэг гэдгийг тэмдэглэх нь зүйтэй.

    Зөвхөн бүртгэлтэй хэрэглэгчид санал асуулгад оролцох боломжтой. , гуйя.

    Шошго: шошго нэмэх

    Компьютерийн программ ашиглан санамсаргүй тоо үүсгэсний дараа сонгосон тоо нь анхны дугаарын нэг хэсэг эсвэл бүрэн тоо бол санамсаргүй тоо гэж тооцогддог. Гэхдээ хэрэв энэ нь өөрчлөгдсөн бол математикчид үүнийг санамсаргүй тоо гэж хүлээн зөвшөөрдөггүй бөгөөд тэд үүнийг хэвийсэн тоо гэж нэрлэж болно. Гэхдээ хэрэв та энгийн ажилд зориулж програм боловсруулж байгаа бол үүнийг анхаарч үзэхгүй. Гэхдээ хэрэв та сугалааны хөтөлбөр эсвэл бооцоот тоглоом гэх мэт үнэ цэнэтэй материалд санамсаргүй тоо үүсгэх програм боловсруулж байгаа бол энэ хэргийг авч үзэхгүй бол удирдлага таныг хөтөлбөрөөс татгалзах болно.

    Ийм хүмүүс байгаа хүмүүст миний санал болгож байна:

    Math.random() ашиглан санамсаргүй тоо үүсгэх (n гэж бодъё)

    Одоо бол n * 10 давхар таны хариулт, шаардлагатай бол n * 100 давхар таны хариулт гэх мэт.

    Одоо дүрдээ ороорой:

    Та тодорхой хүрээнд тоо асуусан. (Энэ тохиолдолд та энэ мужид хэт нэг талыг барьсан байна. - -аас тоо авч, хэмжигдэхүүнийг эргүүлэх нь таныг - руу хазайх болно, гэхдээ зөвхөн үхэл нэг талыг барьсан тохиолдолд энэ нь санамсаргүй тохиолдол хэвээр байна.)

    Тиймээс таны мужийг анхаарч үзээрэй ==> муж дахь элементийн тоо = 247 - 78 + 1 = 170; (Учир нь энэ хоёр хил хязгаарт багтана

    /*1-р арга:*/ var i = 78, j = 247, k = 170, a = , b = , c, d, e, f, l = 0; төлөө(; би

    ХОНХ

    Энэ мэдээг чамаас өмнө уншсан хүмүүс бий.
    Шинэ нийтлэлүүдийг хүлээн авахын тулд бүртгүүлээрэй.
    Имэйл
    Нэр
    Овог
    Та Хонхыг хэрхэн уншихыг хүсч байна вэ?
    Спам байхгүй