Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
在 javascript/practice
資料夾下,建立 math.html
來練習。
JavaScript 提供了一個 Math
物件,讓我們可以針對數學的領域中,進行一些基本的操作,如下:
將數值轉成正數,例:
四捨五入的近似值,例:
指數,某數的幾次方:
開根號:
無條件進位到較大整數:
無條件進位到較小整數:
在所有的數值參數當中,找出最小值:
在所有的數值參數當中,找出最大值:
在數值 0 ~ 1 之間,隨機產生小數點。(有包含 0,但不包含 1)。
以下程式同學執行看看:
在 console 中,隨機印出 0 ~ 9 的整數。
在 console 中,隨機印出 0 ~ 10 的整數。
在 console 中,隨機印出 1 ~ 10 的整數。
在 console 中,隨機印出 1 ~ 100 的整數。
參考作法:
在 javascript/practice
資料夾下,建立 date.html
來練習。
預設上會抓取瀏覽器上所設定的時區。建立當下的日期物件:
共有7個參數,分別是年、月、日、時、分、秒、毫秒。
留意「月」的部份,0 是一月份;到 11 是十二月份。
例 1:(指定到 7 個參數(
例 2:(只指定 2 ~ 6 個參數)
例 3:(指定 1 個參數,指的是毫秒)
Unix Timestamp:指的是從 1970 年 1 月 1 日開始,一直到現在的「秒數」。
T
:大寫的 T,用來做為日期與時間的區隔。
Z
:表示的是 UTC 時區。
如果想要表達相對於 UTC 時區,就將 Z
移除,改成 +HH:MM
或 -HH:MM
。
例 1:(留意輸出會是 +8
的時區)
例 2:(改成 +8
時區)
GMT 與 UTC 查詢參考:
一旦日期物件建立了,那就可以使用以下相關操作:
將日期物件的輸出轉成字串:
例:
1 天 = 24 小時 = 60 * 60 * 24 = 86400 秒 = 86400000 毫秒。
完成以下函式,然後在 console 中輸出的結果是差「幾」天:
參考作法:
累積自己的函式庫 my_funcs.js
。
在 javascript/practice
資料夾下,建立 array_sort.html
檔案,以便練習。
預設上,sort() 排序的是字串。然後會影響原來的字串。
如果陣列裡是數值,會發現排序出來的結果跟我們想的不一樣:
Compare Function 的用途是用來取代 sort() 函式預設的字串排序方式,也就是我們可以自訂排序方式,每次比較兩個數值,然後必需回傳負數、0、正數。
常見寫法:
回傳如果是負數: 就先排 a 再排 b。
回傳如果是正數:就先排 b 再排 a。
回傳如果是 0:就不做任何更動。
解讀:
40、100 會被代入,a 是 40,b 是 100,兩者相減是負數,所以先排 40 再排 100。依此類推。
只要將回傳的結果加上負號即可:
解讀:
40、100 會被代入,a 是 40,b 是 100,兩者相減是負數,但因為加上了負號,所以回傳結果是正數,所以先排 100 再排 40。
陣列整個反轉:
請將以下的物件陣列,依照 year 來排序,由小到大:
參考作法:
在 javascript/practice
資料夾下,建立 array_iteration.html
檔案,以便練習。
以下各迭代範例,同學都需要實際執行過並且會解讀。
陣列的每個項目,都依序地跑過執行指定的程式:
value:陣列的值。
index:陣列索引,從 0 開始。
陣列裡的每個項目,都執行特定程式,要有回傳值(return),然後會產生新的陣列,原陣列並不會被影響。例:
如果不靠內建的 map() 函式,自己寫邏輯的話,例:
按照指定的過濾條件,回傳新的陣列,不會影響原來的陣列。例:
依序跑過每個陣列項目,如果陣列裡的每一項,都符合指定的條件,那就回傳 true;反之,只要有一個不符合,就回傳 false。例:
依序跑過每個陣列項目,如果陣列裡的每一項,只要有一項符合指定的條件,那就回傳 true;反之,如果都不符合,就回傳 false。例:
在陣列中找一個元素,找到第一個出現的位置:
在陣列中找一個元素,從後面開始找,找到第一個出現的位置:
回傳第一個找到符合條件的那項:
回傳第一個找到符合條件的那項的索引值:
方法
說明
getFullYear()
取得四位數的西元年。
getMonth()
0 ~ 11。取得月份。0 代表一月,11 代表十二月。
getDate()
1 ~ 31。取得日期。
getHours()
0 ~ 23。取得小時的部份。
getMinutes()
0 ~ 59。取得分鐘。
getSeconds()
0 ~ 59。取得秒數。
getMilliseconds()
0 ~ 999。取得毫秒數。
getTime()
取得 Unix Timestamp,回傳毫秒數。
getDay()
0 ~ 6。取得星期幾。0 代表星期日,6 代表星期六。
Date.now()
與 getTime() 同。
字元
比對規則
範例
^
字串起始
/^This/ 與 "This is" 比對結果:true。
$
字串結尾
/end$/ 與 "the end" 比對結果:true。
*
出現零次或多次
/se*/ 與 "seeee"、"se" 比對結果:true。
?
出現零次或 1 次
/ap?/ 與 "apple"、"and" 比對結果:true。
+
出現 1 次以上
/ap+/ 與 "apple" 比對結果:true。與 "and" 比對結果:false。
{n}
剛好出現 n 次
/ap{2}/ 與 "apple" 比對結果:true。與 "and" 比對結果:false。
{n,}
至少出現 n 次
/ap{2,}/ 與 "apple"、"appple" 比對結果:true。與 "aple" 比對結果:false。
{n,m}
最少出現 n 次,最多出現 m 次
/ap{2,4}/ 與 "apple" 比對結果:true。與 "aple" 比對結果:false。
.
任意字元(換行字元除外:\r(enter)、\n(換行)、\r\n(換行))。\t 為 tab
/a.e/ 與 "ape"、"axe"、"a\te" 比對結果:true。與 "a\ne" 比對結果:false。
[...]
中括號裡的任意字元
/a[px]e/ 與 "ape"、"axe" 比對結果為 true。與 "apxe" 比對結果:false。
[^...]
除了中括號裡的任意字元
/a[^px]/ 與 "ale" 比對結果:true。
\d
數字 0 ~ 9
/\d{3}/ 與 "abc 123" 比對結果:true。
\D
任何非數字字元
/\D{2,4}/ 與 "abc 123" 比對結果:true。
\w
字母、數字、底線符號
/\w/ 與 "javascript" 比對結果:true。與 "%" 比對結果:false。
\W
非「字母、數字、底線符號」的其它字元
/\W/ 與 "100%" 比對結果:true。
\n
換行字元
\s
一個空白字元
\S
一個非空白字元
\t
一個 tab 字元