JavaScript原生對象總綱

來源:互聯網
上載者:User

標籤:ber   位置   get   拼接   Null 字元串   靜態方法   自動   區間   數組排序   

一. javascript之Array類

  建立js數組兩種方式:

var arr = [];  或
var arr = new Array();

()裡可以指定長度,也可以不指定,指不指定都無所謂,因為js裡的數組長度是可變的

1.concat(arr1,arr2,arr3......arrx):

  js數組合并,返回合并後的新數組,傳遞一個或多個數組,字串都可以行,返回的都是一個合并的新數組(傳的數組會先轉成字串再一個一個的傳入進去)。

2. join():

  將數組元素按指定的分隔字元拼接成一字串返回,預設分隔符號為英文逗號;

  var str=arr.join("串連符"); 

固定套路:
  1. 字元數組拼接為單詞:
  var word=chars.join("");
    強調:  1. join()==>String(arr)
       2. 無縫拼接必須加""
  2. 將單詞拼接為英文句子:
    var stmt=words.join(" ");
  3. 將數組拼接為頁面元素:

值的一說的是 將數組轉為字串有2種方法,一種是String(arr),另一種就是用arr.join() 

3. slice(start,end): 截取 

  var subArr=arr.slice(starti,endi+1);
  複製出arr中starti位置到endi位置的元素,組成新的子數組。強調:不改變原數組,只返回新的子數組。含頭不含尾!
  支援負數參數: arr.slice(-n,-m)
  截取倒數第n個開始,到倒數第m個之前截止的元素。arr.slice(arr.length-n,arr.length-m);
 

 

5, splice():  刪除 插入 替換——直接修改原數組

    刪除:  [var deletes=]arr.splice(starti,n)
刪除arr中starti位置開始後的n個元素不必考慮含頭不含尾,其實被刪除的元素會組成新數組返回,如果被刪除的元素還有用,可用變數接住傳回值。
  插入:  arr.splice(starti,0,值1,值2,...)
將值1,值2,...插入到arr中starti位置,原starti位置及其之後的值向後擠壓不支援數組參數:無法打散參數數組
  替換: [var deletes=]
arr.splice(starti,n,值1,值2,...),刪除arr中starti開始後的n個元素,再在starti位置,插入值1,值2。刪除的元素個數和插入的新元素個數可以不相等。js會自動調整數組的容量。

4. sort(fn): 

  數組排序,預設是按英文字母的ASC碼升序排列,比如apple排在orange前面,其實sort還可以接收一個參數,該參數function類型,有點類似於java裡的比較子的意思,就是說如果不想按預設的比較規則來排序,就必須提供一比較函數,該函數有兩個參數a、b,

如果傳回值小於0,則a排在b前面

如果傳回值大於0,則b排在a前面

如果傳回值等於0,則a、b位置不變

5. pop():

  刪除數組的最後一個元素,把數組長度減 1,並且返回它刪除的元素的值。

如果數組已經為空白,則 pop() 不改變數組,並返回 undefined 值。

6. push(n1,n2,n3,....nx):

  向數組末尾添加一個或多個元素,並返回添加後數組的長度,

注意,此方法操作的是原數組對象,不會棄置站台。此方法可以接收多個參數,

至少要傳遞一個參數

7. reverse():

   顛倒數組中元素的順序,即如果原來數組元素是1,2,3,4,5,調用reverse()後,

元素順序為5,4,3,2,1,注意,此方法直接操作的是原數組對象,不會棄置站台。

8. shift(): 

  刪除數組的第一個元素,並返回它刪除的那個元素

如果數組已經為空白,則 shift() 不改變數組,並返回 undefined 值

注意,此方法直接操作的是原數組,不會棄置站台對象

9. unshift(element1,.....,element):

向數組開頭添加一個或多個元素,並返回添加後的數組長度。至少要傳一個參數。

注意此方法是直接操作原數組,最後添加的元素index=0,以此類推。

 

二.  js中Number類常用方法:

1. toFixed(): 

  將數字四捨五入為指定小數位元的數字,參數值範圍為[0,20],表示四捨五入後保留的小數位元,

如果沒有傳入參數,預設參數值等於0

2. toprecision(): 

  用於將數字精確到指定長度,方法接收參數一個參數,參數的範圍為[0,21]參數表示數位位元,如果數字總位元大於參數值且數字是小數,那麼會進行四捨五入,如果數字總位元小於參數值且數字是小數,那麼多出的小數位會自動補零如果數字總位元小於參數值且數字為整數,那麼會改用科學計數法表示

3. isNaN(num): 

  判斷是否為數字,這個方法很有用

三. js中String類常用方法:

1, charAt(index):

  用於返回指定位置的字元,index從0開始計算

 

2, charCodeAt(index):

  用於返回指定字元的ASCII碼

 

3, concat(element1,element2......elementx):

  用於拼接兩個或多個字串

 

4, indexOf():

  用於返回指定字元在字串中第一次出現的索引,從第一個字元開始尋找,找到立即返回。沒有尋找到目標會返回-1

 

5, lastIndexOf():

  用於返回指定字元在字串中第一次出現的索引,不過是從最後面一個字元開始尋找,沒有尋找到目標會返回-1

6, match():

  用於檢索與指定正則匹配的子串,如果開啟了全域檢索模式,且有多個合格子串,那麼

返回的是一個數組

7, replace():

  用於字串替換操作,接收兩個參數。

  第一個參數:表示待替換的字串,或者是替換的Regex

  第二個參數:替換文本,也可以是一個function的傳回值

  注意此方法不會改變原字串對象,而是返回新字串對象。

  用function傳回值作為替換文本時,function裡有兩個參數:

m表示前面第一個參數即正則匹配到的子串,第二個參數是該子串在原字串中的索引位置

search():用於返回指定子串或符合指定Regex的子串在原字串中第一次出現的索引,

如果沒有找到,則返回-1

var str = "I like javascript.";alert(str.search("javascript"));

     再次解釋延伸

替換: str=str.replace(reg,"替換值");
將str中reg匹配的關鍵詞替換為指定的"替換值"
  強調:  reg後加g,替換所有
      不加g,僅替換第一個
完整版的replace:
  str=str.replace(reg,function(kw){
  //處理邏輯;
  return "替換值";
   })
其中,kw會自動獲得每次找到的當前關鍵詞
函數體中,可根據當前關鍵詞,執行處理,最後返回對應的替換值

衍生功能:
刪除關鍵詞:str.replace(reg,"");
格式化: 2步:
1. 使用分組,將原字串按照格式需要分割。
比如: 19831226
(\d{4})(\d{2})(\d{2})
  1    2    3
強調: 在匹配時,每個分組都會自動獲得一個序號:
2. 使用replace方法,在替換時,分別獲得每個分組的內容,再拼接格式。
  str.replace(reg,"$1年$2月$3日");
  其中:$n會自動匹配第n個分組的子字串

8, slice(start,end):

  用於截取start,end指定區間內的字串並返回,此方法不會操作原字串對象資料,而是建立字串副本儲存截取後的字串資料如果end未指定,則表示直接從start直到數組末尾,如果start或end為負數,表示從後面開始算起,比如-1,表示從倒數第一個元素算起,以此類推。截取的區間範圍是[start,end),前閉後開區間,且start必須小於end如果沒找到一個元素,則返回一個Null 字元串

9, substr():

  用於字串截取,方法接收兩個參數,第一個參數start,表示從start索引位置開始截取,索引從0開始計算,如果此參數值是負數,則會從字串結尾開始計算,比如-1表示最後一個字元,-2表示倒數第二個字元,以此類推。第二個參數length,表示截取的字串長度,此參數為可選,如不指定此參數,則預設會一直截取到字串結尾。

  注意:此方法已不建議使用

var str = "I like javascript!";alert(str.substr(7,10)); 

10, substring():

  用於截取start與end索引區間內的字串,區間範圍為[start,end],前閉後開注意:參數start和end必須為非負整數,如start為負數,則預設會將start賦值為0,如end為負數,則預設會將end賦值為0,且截取區間改為[0,start)。如果start大於end,那麼會首先交換兩個參數值的位置,即區間改為[end,start)

 

var str1 = "I like javascript!":  alert(str1.substring(7,18));  var str2 = "I like javascript!";  alert(str2.substring(3,-3)); 

   注意的是8,9,10這3個API都是一個功能只是參數意義不同,用得最多的是slice(start,end),現在substr()基本沒人用了,substring()看個人習慣使用

11, toLowerCase():

  把字串轉換成小寫

12, toUpperCase():

  把字串轉換成大寫

13, split("分隔字元"):切割 

  var subs=str.split("分隔字元")
       str.split(reg)
  傳回值: 包含切割後所有子字串的數組,在返回的數組中,不再包含分隔字元。
  何時使用: 今後,只要分段處理字串時都要先切割,再分段處理每個字字串
最後再拼接起來。
固定套路:
1. 將字串,打散成字元數組:
  var chars=str.split("");
2. 將英文的句子打散成單詞:
  var words=stmt.split(" ");
3. 將頁面元素的內容,切割為子數組(這就是怎麼將字串變成數組的方法)

有個發現string和array中有2個API是這兩種類型都可以用的,concat()和slice() ,實質這2API是數組中的API,為什麼字串可以用,是這2個方法不改變原來數組的值,這一特性符合字串的特性(唯讀字元,用API原字串值不會變),

四. js中Date對象常用 方法:

getDate():返回一個月中的某一天,傳回值範圍:1-31
getDay():返回一周中的第幾天也就是星期幾,傳回值範圍:0-6,0表示星期天,6表示星期六
getMonth():返回日期中的月份數字,傳回值範圍:0-11,0表示1月,11表示12月,這個有點變態
getFullYear():返回日期中的年份數字,用4位元字表示而不是2位元字的縮寫形式
getHours():返回小時數,傳回值範圍:0-23
getMinutes():返回分鐘數:傳回值範圍:0 -59
getSeconds():返回秒數,傳回值範圍:0-59
getMilliseconds():返回毫秒數,傳回值範圍:0-999,這個方法命名我表示不能理解,為何Seconds首字母不大寫?
getTime():返回指定的日期距1970年1月 1日00:00:00之間的毫秒數。
parse(): 用於將符合規定的日期文字轉換成日期,並返回該日期至1970-01-01的毫秒數

注意:此方法是靜態方法,不用能用Date對象調用,而應該使用Date類調用。
//var date = Date.parse("1987-06-05"); //FirefoxOK,IE不OK

parse方法接收的日期文字格式比較相容的格式為:

yyyy/MM/dd
yyyy/m/d
MM/dd/yyyy
M/d/yyyy
yyyy/MM/dd HH:mm:ss
yyyy/m/d HH:mm:ss
MM/dd/yyyy HH:mm:ss
M/d/yyyy HH:mm:ss

setDate():設定一個月中的某一天,取值範圍:1-31
setDay():設定一周中的第幾天也就是星期幾,取值範圍:0-6,0表示星期天,6表示星期六
setMonth():設定日期中的月份數字,取值範圍:0-11,0表示1月,11表示12月,這個有點變態
setFullYear():設定日期中的年份數字,用4位元字表示而不是2位元字的縮寫形式
setHours():設定小時數,取值範圍:0-23
setMinutes():設定分鐘數:取值範圍:0 -59
setSeconds():設定秒數,取值範圍:0-59
setMilliseconds():設定毫秒數,取值範圍:0-999,這個方法命名我表示不能理解,為何Seconds首字母不大寫?
setTime():設定指定的日期距1970年1月 1日00:00:00之間的毫秒數。
 
toString():將Date對象轉換成字串形式,預設是格林威治標準時間格式即GMT格式
toTimeString():將Date對象的時間部分轉成字串形式,GMT格式
toDateString():將Date對象的日期部分轉成字串形式,GMT格式
toLocaleString:根據本地語言的日期規則表示,中文下是yyyy年MM月dd日 hh:mm:ss
Date.UTC(year,month,day,hours,minutes,seconds,ms):

此方法用於根據世界時返回距離1970-01-01的毫秒數,前3個參數是必須的,其餘參數是可選的,
分別表示年、月、日、小時、分鐘、秒、毫秒,
此方法返回的毫秒數可以傳遞給Date()建構函式,
            
Date對象的toString方法預設是轉換成GMT格式,對於我們來說,不適用,我們往往希望顯示為yyyy-MM-dd hh:mm:ss格式,
Date原生對象沒有提供這個功能,只好自己擴充了,

五, js中的Math類:

  注意此類是靜態類,不能通過建構函式建立執行個體的,所以提供的方法都是靜態方法,直接通過類名調用,不能加new

1, abs():

  擷取數位絕對值,如果提供的參數是字串,則會首先嘗試將其轉換成數字,如果不能

轉成數字,則直接返回NaN,如果能,則返回其絕對值。

2, ceil():

  對傳入的參數進行向上取整計算,如果傳入的不是數字,則會嘗試將其進行數字轉換,

不能轉換則之間則直接返回NaN

3, floor():

  對傳入參數進行向下取整計算,如果傳入的不是數字,則會嘗試將其進行數字轉換,

不能轉換則之間則直接返回NaN

4, max(x1,x2,x3.....xn):

  返回指定參數中的最大值,如果指定參數中有一個不能轉換成數字,則直接

返回NaN,如果沒有傳入參數,則返回負無窮大

5, min(x1,x2,x3.....xn):

  返回指定參數中的最小值,如果指定參數中有一個不能轉換成數字,則直接

返回NaN,如果沒有傳入參數,則返回正無窮大

6, pow(x,y):

  返回x 的 y 次冪,如果計算結果是負數,則返回NaN,如果由於計算結果太大,導致浮點溢出,

則返回正無窮大

7, random():

  返回0 ~ 1 之間的一個隨機數,包含0不包含1

8, round(x):

  與 x 最接近的整數。如果x是正數,那麼0.5會轉成1,如果是-0.5,那麼會舍掉,

 -0.50001才會轉成-1

9, sqrt(x):

  返回一個數的平方根,如果 x 小於 0,則返回 NaN,如果傳入的不是數字,則會嘗試將其進行數字轉換,

不能轉換則之間則直接返回NaN

六, js的RegExp正則對象:

  建立正則對象兩種方式:

1.  直接量:var reg=/正則/ig;
  何時使用: 只有正則是固定的,不需要動態產生時,就用直接量建立
禁忌: /之間不允許包含"/"字元,如果必須包含,應轉義為\/。如/\d{6}/

2. 用new關鍵字:
  var reg=new RegExp("正則","ig");
  何時使用: 只要Regex需要動態產生時,都要用new建立。
  禁忌: ""中只要包含\,",‘都要用\轉義。

詳細解釋

1. Regex

什麼是: 專門規定字串中字元出現規律的運算式
何時使用: 尋找 替換 驗證
如何使用:
  1.最簡單的Regex就是關鍵詞的原文
  2.字元集: 規定字串中某*一位*字元備選字元列表的規則。
  如何使用:[備選字元列表]
特殊:
1.  如果備選字元列表中包含部分unicode練習的字元,可用-省略中間的字元:
比如: 匹配1位大寫字母: [A-Z]
1位元字:[0-9]
1位小寫字母:[a-z]
1位字母:[A-Za-z]
1位漢字:[\u4e00-\u9fa5]
2.  表示除xxx之外都行:
[^47] 除了4和7之外都行
3. 預定義字元集: 對常用字元集的簡化
1位元字: \d ==>[0-9]
1位字母,數字或_:
\w ==>[a-zA-Z0-9_]
1位Null 字元: \s 空格,定位字元,換行

1位任一字元: . 除換行外,一切字元
4.  量詞: 專門規定字元集出現次數的規則
如何使用: 用於一個字元集之後,修改前一個相鄰字元出現的次數
有明確數量:
{n,m} 至少n次,最多m次
{n,} 至少n次,多了不限
{n} 必須n次,不能多也不能少

不明確數量:
? 可有可無,最多1次
* 可有可無,多了不限
+ 至少1次,多了不限
5. 選擇和分組:
選擇: 或 | 在兩個運算式中二選一匹配
分組: 將多個字元集用(),標記為一組
何時使用: 希望一個量詞同時修飾多個字元集時,就要將多個字元集先分組。
手機號:
+86或0086 可有可無,最多1次
Null 字元 至少一個,多了不限
1
在3,4,5,7,8之中挑一個
9位元字
(\+86|0086)?\s+1[34578]\d{9}
6. 指定匹配位置:
字串開頭: ^ 比如: 開頭的Null 字元
字串結尾: $ 比如: 結尾的Null 字元
固定套路:
如果希望從頭到尾必須完整匹配時,就要同時前加^,後加$——驗證
例外:^\s+|\s+$ 不是從頭到尾完整匹配
因為|優先順序最低,到時正則被一分為二
單詞的邊界: \b

執行個體

需求: 密碼強度驗證
6~8位,字母,數位組合,至少包含一位大寫字母和一位元字
預判: 在正式匹配之前,先瀏覽整個運算式,是否符合指定的規則
(?規則$)
1. 預判從頭到尾不全由字母組成:
說明: 至少包含一位元字或特殊符號
(?![a-zA-Z]+$)
2. 預判從頭到尾不全由數字和小寫字母組成
說明: 至少包含一位大寫字母或特殊符號
(?![a-z0-9]+$)
3. 必須是6~8位字母和數位組合
^(?![a-zA-Z]+$)(?![a-z0-9]+$)[a-zA-Z0-9]{6,8}$

 

Regex:2種模式:
  貪婪模式: 預設Regex匹配最長的合格字串
  懶惰模式: 讓Regex僅匹配最短的合格子字串
  貪婪改懶惰:.*->.*? .+->.+?

  驗證API: 檢查一段字串是否和Regex完全符合。
  如何驗證: var bool=reg.test(str);
  檢查str是否和reg完全符合,如果驗證通過,返回true,否則返回false。
  強調: 驗證功能中,Regex必須前加^,後加$。如果不加,只要部分匹配,就為true。不用加g尾碼,因為只匹配一次。

JavaScript原生對象總綱

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.