2021-11-17 內(nèi)置對(duì)象和函數(shù)初步

文初先補(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 = {}),MathDate,

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)注博主私聊哦!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容