文初先補(bǔ)充兩點(diǎn),數(shù)組的排序方式.sort(),括號(hào)里面可傳函數(shù)參數(shù),針對(duì)數(shù)組里的數(shù)據(jù)為數(shù)字型時(shí),升序的傳遞函數(shù)為function(a,b){return?a-b},當(dāng)return為b-a時(shí)為降序,
其二就是相關(guān)排序算法,冒泡(咕嘟咕嘟)排序和選擇排序:
冒泡排序,即對(duì)數(shù)組內(nèi)部的數(shù)據(jù)兩兩對(duì)比,大著居后(升序),該算法的核心是讓每一個(gè)相鄰數(shù)據(jù)對(duì)比后依次交換位置(判斷大時(shí)交換),寫作:
let arr1 = [3, 7, 4, 2, 5];
? ? ? ? for (let i = 0; i <= arr1.length - 1; i++) {
? ? ? ? ? ? for (let j = 0; j <= arr1.length - i - 1; j++) {
? ? ? ? ? ? ? ? if (arr1[j] > arr1[j + 1]) {
? ? ? ? ? ? ? ? ? ? let a1 = arr1[j];
? ? ? ? ? ? ? ? ? ? arr1[j] = arr1[j + 1];
? ? ? ? ? ? ? ? ? ? arr1[j + 1] = a1;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? console.log(arr1);
,選擇排序法更便于理解,即數(shù)組中的每一個(gè)數(shù)都分別對(duì)其自身進(jìn)行一次比較,大著居后(升序),選擇權(quán)在自身,對(duì)于計(jì)算來說則冒泡排序讀取較大數(shù)據(jù)量的數(shù)組時(shí)會(huì)減少運(yùn)算時(shí)間,而選擇排序則對(duì)新猿來說友好好多,具體使用可以自行選擇,寫作:
let arr1 = [13, 45, 28, 57, 66, 26, 14, 9, 97, 15];
? ? ? ? let midd = 0;
? ? ? ? for (let i = 0; i < arr1.length; i++) {
? ? ? ? ? ? for (let j = 0; j < arr1.length; j++) {
? ? ? ? ? ? ? ? if (arr1[j] > arr1[i]) {//這里的判斷符號(hào)將決定排列的順序,<是升序,>是降序
? ? ? ? ? ? ? ? ? ? midd = arr1[j];
? ? ? ? ? ? ? ? ? ? arr1[j] = arr1[i];
? ? ? ? ? ? ? ? ? ? arr1[i] = midd;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? console.log(arr1);
內(nèi)置對(duì)象:
這里主要簡述兩個(gè)JS內(nèi)置對(duì)象,(默認(rèn)new對(duì)象的方法為 new object = {}),Math和Date,
Math:首先,Math是一個(gè)內(nèi)置對(duì)象,即不需要再對(duì)其創(chuàng)建對(duì)象(省略new亦可運(yùn)行),Math中主要是一些數(shù)學(xué)運(yùn)算方式(當(dāng)然,像加減乘除這類的直接用運(yùn)算符就好了),以下略簡單了解:
Math.random() 返回一個(gè)0到1之間的隨機(jī)數(shù),let a= Math.random()(值得注意的是該方法取值范圍為【0,1),即可以取到0但會(huì)無限趨近于1的一個(gè)隨機(jī)小數(shù)類似于lim1
Math.abs() 返回一個(gè)數(shù)的絕對(duì)值,let a=Math.abs(-99),此時(shí)a返回為99,abs(防抱死?-_-||)是一個(gè)絕對(duì)值運(yùn)算,使括號(hào)內(nèi)的數(shù)取其絕對(duì)值
Math.ceil() 向上取整,let a = Math.ceil(1.000000001),此時(shí)返回2,即取括號(hào)內(nèi)數(shù)字的最大整數(shù)位,
Math.floor() 向下取整, let a = Math.floor(1.999999),此時(shí)返回1,即取括號(hào)內(nèi)數(shù)字的最小整數(shù)位,
Math.max() 返回最大值,括號(hào)內(nèi)填入多個(gè)數(shù),取最大的數(shù)返回值
Math.min() 返回最小值,和Max相反的用法
Math.pow() 返回指定數(shù)的次冪,括號(hào)內(nèi)傳入兩個(gè)值,即(x,y),x的y次方是多少
Math.round() 四舍五入,表示四舍五入取整,這里有個(gè)小坑,當(dāng)括號(hào)內(nèi)的數(shù)為-1.5時(shí)會(huì)返回-1,而不是像-1.55、-2.6一樣取到-2,-3,當(dāng)括號(hào)內(nèi)的數(shù)為負(fù)且小數(shù)位剛好在5(確切的說是小數(shù)部分剛好是0.5時(shí)),那么此時(shí)會(huì)向正軸取整。
Math.PI屬性,返回圓周率, let a = Math.PI 即圓周率3.1415926
Math.sqrt(x) ?返回?cái)?shù)的平方根。let a = Math.sqrt(36),此時(shí)返回6,因?yàn)?的平方為36
以上部分為博主常用或者說隨寫的一部分內(nèi)容,想要了解更多可以訪問W3C或者菜鳥教程
Date:時(shí)間對(duì)象
和數(shù)學(xué)對(duì)象區(qū)別的是,該對(duì)象使用時(shí)需new Date(),否則使用其方法時(shí)可能會(huì)報(bào)錯(cuò):
得到當(dāng)前時(shí)間:let time1 = new Date();
得到需要的時(shí)間: let time2 = new Date("2035-11-12 8:8:8");
時(shí)間戳,是目標(biāo)時(shí)間距1970年1月1號(hào)(第一臺(tái)能夠計(jì)時(shí)的計(jì)算機(jī)誕生)所經(jīng)過的時(shí)間的總毫秒數(shù),該數(shù)據(jù)是由目標(biāo)時(shí)間-固定時(shí)間得出的結(jié)果,相似的,兩個(gè)時(shí)間相減的結(jié)果也是一個(gè)由毫秒數(shù)表示的時(shí)間戳。
得到需要的時(shí)間戳的方法:let time3 = +new Date("2021-11-17 19:19:17");
這里順便列舉一些方法:(為方便閱讀(摸魚),前綴統(tǒng)一為Date.)
getFullYear() 返回年份,返回對(duì)應(yīng)的年份
getMonth() 返回月份 返回的值是0-11(0表示1月份,11表示12月份),需要時(shí)可手動(dòng)加1,方便閱讀
getDate() 返回月份的日期,返回對(duì)應(yīng)的日期(天)
getDay() 返回星期幾 返回的值是0-6,(0表示星期天),區(qū)別于Date,次數(shù)返回的值表示星期數(shù)而不是天數(shù)
getHours() 返回小時(shí) 返回的值是0-23(0表示凌晨12點(diǎn))
getMinutes() 返回分鐘
getSeconds() 返回秒
getMilliseconds() 返回毫秒
getTime() 返回時(shí)間戳,這里同樣可以獲取對(duì)應(yīng)的時(shí)間戳
parse()? 返回1970年1月1日午夜到指定日期(字符串)的毫秒數(shù)。(還是那個(gè)戳)
setDate()? ? ? ?設(shè)置 Date 對(duì)象中月的某一天 (1 ~ 31)。
setFullYear()? ? 設(shè)置 Date 對(duì)象中的年份(四位數(shù)字)。
setHours()? ? ? 設(shè)置 Date 對(duì)象中的小時(shí) (0 ~ 23)。
setMilliseconds()? ? ?設(shè)置 Date 對(duì)象中的毫秒 (0 ~ 999)。
setMinutes()? ? ?設(shè)置 Date 對(duì)象中的分鐘 (0 ~ 59)。
setMonth()? ? ?設(shè)置 Date 對(duì)象中月份 (0 ~ 11)。
setSeconds()? ? ? 設(shè)置 Date 對(duì)象中的秒鐘 (0 ~ 59)。
setTime()? ? ? ? 以毫秒設(shè)置 Date 對(duì)象
此處的SET方法可參考菜鳥教程,里面有比較詳細(xì)的說明
函數(shù):
這里只做簡單介紹,即一段封裝代碼,可反復(fù)代用的運(yùn)算方式,通常內(nèi)部不賦具體值(實(shí)參),而是用一個(gè)變量名(形參)代替,可理解為萬能X,Y,且函數(shù)內(nèi)部不輸出,用return 返回一個(gè)值方便后期代用,
例:?function getadd(num1, num2) {? ? ? ? ? ? ? ? ? function為定義函數(shù)名,必須,getadd為自定義函數(shù)名
? ? ? ? ? ? let sum = 0;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?括號(hào)內(nèi)接形參,具體內(nèi)容在花括號(hào)中
? ? ? ? ? ? for (let i = num1; i <= num2; i++) {? ? ? ? ? ?常用循環(huán),計(jì)算1-100的累加
? ? ? ? ? ? ? ? sum += i;
? ? ? ? ? ? }
? ? ? ? ? ? return sum;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?用return(返回)代替輸出
? ? ? ? }
let a1 = getadd(200, 300);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 對(duì)變量a1引用函數(shù)(函數(shù)名為getadd),即sum = a1
? ? ? ? console.log(a1);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?最后在控制臺(tái)輸出一下a1
以上為博主一些筆記和分析,如需互動(dòng)請(qǐng)關(guān)注博主私聊哦!