第二章、數(shù)組付魔、對象和正則表達(dá)式 2019-12-17

一聊品、數(shù)組

  1. 定義:在單個對象中存儲多個值。
  2. 構(gòu)造函數(shù):
    1)Array():返回一個長度為0的數(shù)組對象几苍。
    2)Array(size):返回具有指定個數(shù)的數(shù)組翻屈,元素的初始值都是:undefined。
    3)Array(元素列表):用元素列表初始化數(shù)組妻坝,元素可以是任意類型伸眶。
  3. 直接創(chuàng)建并初始化數(shù)組
    var arr = ["tom",10,null,true];
  4. 數(shù)組的長度不固定,賦值即可改變數(shù)組的長度
    1)為原數(shù)組不存在的下標(biāo)元素賦值刽宪,可以改變數(shù)組大欣逶簟:
    例如:
    var arr = new Array(3);
    arr[3] = 10;
    arr[5] = 100;
    未賦值元素都是undefined。
    2)數(shù)組的lengt屬性不是只讀的圣拄,可以改變(變大或變凶旖铡(相當(dāng)于刪除后面的元素))
  5. 使用下標(biāo)來訪問元素
  6. 遍歷寫法:
for(i in arr){
document.write(arr[i]);
}

注意:i表示遍歷的當(dāng)前元素的下標(biāo),而不是當(dāng)前元素庇谆。
7.length:數(shù)組的長度岳掐,即數(shù)組中元素的個數(shù)。
8.常用的方法:
1)concat(array):返回一個新數(shù)組饭耳,由當(dāng)前數(shù)組和參數(shù)數(shù)組連接而成串述。
2)join("分隔符"):返回一個字符串,由數(shù)組中的所有元素連接而成哥攘,原宿建德分隔符由參數(shù)指定剖煌。字符串對象材鹦。split('分隔符'):根據(jù)參數(shù)指定的分隔符逝淹,把當(dāng)前字符串轉(zhuǎn)換為數(shù)組。
3)reverse():返回一個新數(shù)組桶唐,由原來的數(shù)組反轉(zhuǎn)而成栅葡。
4)sort():按照字母殊勛對數(shù)組中的元素進(jìn)行排序。
sort(比較函數(shù)):根據(jù)參數(shù)中的函數(shù)進(jìn)行比較元素大小尤泽。
例如:

arr.sort(function(x,y){
                return x - y;
            });

5)indexOf(element):在數(shù)組中查找參數(shù)指定的值第一次數(shù)顯的位置欣簇,找到返回對應(yīng)的索引號规脸,沒有找到返回-1.。
6)lastIndexOf(element):在數(shù)組中查找參數(shù)指定的值最后一次出現(xiàn)的位置熊咽,找到返回對應(yīng)的索引號莫鸭,沒有找到返回-1。
7)slice(beginIndex,endIndex):返回一個新數(shù)組横殴,為原來數(shù)組的一部分被因,不包括endIndex元素。
8)toString():返回將數(shù)組中的元素轉(zhuǎn)為由逗號分隔的字符串衫仑。
9)棧操作:
棧的特點(diǎn):先進(jìn)后出梨与,后進(jìn)先出。
a)push(元素列表):給數(shù)組中增加新元素文狱,并返回數(shù)組的新長度(入棧)粥鞋。
b)pop():移除數(shù)組中的最后一個元素,并返回該元素(出棧)瞄崇。
10)隊列操作:
隊列的特點(diǎn):先進(jìn)先出呻粹,后進(jìn)后出。
a)push(元素列表):入隊
b)shift():移除數(shù)組中第一個元素并返回該元素(出隊)杠袱。
11)splice(index,howmany,element…):用戶向數(shù)組中添加尚猿、刪除、替換數(shù)組元素楣富。
a)index:必需凿掂,從何處添加。刪除元素纹蝴。
b)howmany:必需庄萎,規(guī)定應(yīng)該刪除多少個元素,添加元素的時候塘安,該值為0糠涛。
c)elemant…:元素列表,可選兼犯,向數(shù)組添加的元素列表忍捡。

練習(xí):
1.使用prompt()函數(shù)讀入5名學(xué)生的成績,保存到一個數(shù)組中切黔,并求數(shù)組中的最大值砸脊,并倒序排序輸出。
2.隨機(jī)生成1-100以內(nèi)的20個數(shù)纬霞,放入到數(shù)組中凌埂,對前10個元素使用升序,對后10個元素使用降序诗芜。

二瞳抓、引用類型

  1. javascript語言中并沒有真正的類埃疫,javascript中使用“對象的定義”這個概念,相當(dāng)于其他語言中的類的概念孩哑。

  2. 引用類型:也稱為對象的定義栓霜,描述一類對象所共同具有的屬性和方法。

  3. 內(nèi)置的引用類型:ECMAScript提供了很多原聲引用類型横蜒,以便開發(fā)人員使用叙淌。
    1)Object
    2)Array
    3)Date
    4)Math
    5)RegExp(正則表達(dá)式)

  4. 對象:通過引用類型創(chuàng)建的一個實(shí)例。

  5. 對象的創(chuàng)建方式愁铺。
    1)創(chuàng)建一個Object的實(shí)例鹰霍,然后添加它的屬性和方法。
    var o = new Object();
    o.name = "tom";
    o.age = 20;
    o.sayHi = function(){
    alert("Hi!");
    }
    o.sayName = function(){
    alert(this.name);//this表示當(dāng)前對象
    }

     o.sayName();//方法的調(diào)用
    

    2)使用字面量方式創(chuàng)基金對象茵乱。
    var stu = {
    name: "tom",
    "age": 20,
    sayHi:function(){
    alert("Hi");
    }
    };

  6. 使用delete刪除對象的屬性茂洒。
    delete stu.age

  7. with語句的作用:將代碼的作用域設(shè)置到一個特定對象上。
    with(stu){
    var n = name;
    var a = age;
    }

  8. 對象的廢除
    在ECMAScript中有無用存儲單元收集程序瓶竭,因此督勺,javascript不必專門銷毀對象來釋放內(nèi)存。

三斤贰、Date對象

  1. 構(gòu)造函數(shù):
    1)Date():得到瀏覽器的當(dāng)前時間智哀。
    2)Date(year,month,date):根據(jù)參數(shù)指定的年月日創(chuàng)建日期對象(注意:month從0開始)。
    3)Date(year,month,date,hours,minutes,seconds):根據(jù)參數(shù)指定的年月日時分秒創(chuàng)建日期對象(注意:month從0開始)荧恍。
    4)Date("year/month/date"):根據(jù)日期格式字符串創(chuàng)建日期對象(注意:month從1開始)瓷叫。
  2. 得到年月日時分秒
    getXXX():
    getYear():得到從1900年以來的年份(日期的年份減去1900)
    getFullYear():得到真是年份
    getMonth():得到月份(1月份為:0)
    getDate():得到日期
    getDay():得到星期,0表示星期日送巡,1表示星期一
    getHours():得到小時
    getMinutes():得到分鐘
    getSeconds():得到秒
    getTime():得到從1970年1月1日00:00:00以來的毫秒數(shù)
  3. 設(shè)置年月日時分秒方法:
    setXXX()
    4.toLocaleString():把日期對象表示的時間轉(zhuǎn)換為本地字符串格式(包括年月日時分秒)摹菠。
    toLocaleDateString():把日期對象表示的時間轉(zhuǎn)換為本地字符串格式(包括年月日)。
    toLocaleTimeString():把日期對象表示的時間轉(zhuǎn)換為本地字符串格式(包括時分秒)骗爆。
  4. 定時器:
    setTimeout("函數(shù)()",時間間隔):執(zhí)行該定時器方法后次氨,在指定的時間間隔到的時候,執(zhí)行參數(shù)指定的函數(shù)一次
    該方法的返回值表示創(chuàng)建的定時器對象摘投。
    clearTimeout(定時器對象):關(guān)閉定時器

四煮寡、鍵盤事件處理

  1. event:事件對象,在事件發(fā)生的時候犀呼,由系統(tǒng)創(chuàng)建
    屬性:
    keyCode:鍵盤碼幸撕,每一個按鍵都不同,例如:回車:13圆凰、空格:32杈帐、向上箭頭:38
  2. 如何設(shè)置鍵盤事件處理程序
    document.onkeydown = 事件處理函數(shù)名(或匿名函數(shù))

五体箕、Math

  1. random():生產(chǎn)一個0到1之間的隨機(jī)數(shù)专钉,該值大于等于0挑童,小于1。
  2. round(val):四舍五入跃须。

六站叼、String對象

  1. 構(gòu)造函數(shù):
    String("字符串字面量")
  2. 直接使用字符串字面量賦值。
    var s = 'tom';
  3. length:得到字符串中字符個數(shù)菇民。
  4. 常用的方法:
    1)charAt(index):得到索引號為index的字符
    2)substring(startIndex,endIndex):取子串
    3)substr(startIndex,length):取子串
    4)indexOf(查找的串):在字符串中查找參數(shù)指定的字符串第一次出現(xiàn)的位置尽楔,找到返回對應(yīng)的索引號,沒有找到返回-1第练。
    5)lastIndexOf(查找的串):在字符串中查找參數(shù)指定的字符串最后一次出現(xiàn)的位置阔馋,找到返回對應(yīng)的索引號,沒有找到返回-1娇掏。
    6)replace(str1,str2):返回一個新的字符串呕寝,其中把原字符串中的第一個str1,替換為str2
    7)toUpperCase():轉(zhuǎn)換為大寫字母婴梧。
    8)toLowerCase():轉(zhuǎn)換為小寫字母下梢。

七、表單驗(yàn)證

  1. 定義:在表單數(shù)據(jù)被提交給服務(wù)器之前塞蹭,對html表單中輸入的數(shù)據(jù)進(jìn)行驗(yàn)證孽江,如果沒有錯誤,則提交表單番电,否則不提交岗屏。
  2. 作用:
    1)在客戶端驗(yàn)證,速度快漱办。
    2)減輕服務(wù)器壓力担汤。
  3. 驗(yàn)證過程:
    1)編寫頁面:
    <form action="login.jsp" onsubmit="return checkForm();">
    <input type="submit" value="登錄">
    </form>
    2)當(dāng)我們點(diǎn)擊“提交”按鈕的時候,會自動觸發(fā)form上的onsubmit事件洼冻,接著就會調(diào)用事件的處理程序checkForm()崭歧。
    3)編寫表單驗(yàn)證方法checkForm(),該方法返回值為true,表示驗(yàn)證成功撞牢,提交表單率碾,返回false,表示表單驗(yàn)證失敗屋彪,不提交表單所宰。
    4.在失去焦點(diǎn)的時候,對某個表單元素進(jìn)行驗(yàn)證畜挥。
    1)在驗(yàn)證表單元素的后面添加一個span標(biāo)簽仔粥,設(shè)置有id屬性<span id="errUsername"></span>
    2)在要驗(yàn)證的表單元素中添加失去焦點(diǎn)事件處理程序:
    <input type="text" name="username" onblur="checkUsername()">
    3)在checkUsername()方法中編寫代碼:
    a)得到span標(biāo)簽對象。
    b)設(shè)置span標(biāo)簽內(nèi)容為空串(目的是為了先清除已前的錯誤消息)。
    c)判斷當(dāng)前表單元素是否輸入正確躯泰,如果錯誤谭羔,為span標(biāo)簽指定錯誤消息。

八麦向、正則表達(dá)式

  1. 定義:又稱為規(guī)則表達(dá)式瘟裸,就是用事先定義好的一些特殊字符、及這些特殊字符的組合诵竭,組成一個“規(guī)則字符串”话告,這個規(guī)則字符串用來表達(dá)對字符串的一種邏輯過濾。

  2. 作用:
    1)驗(yàn)證給定的字符串是否符合正則表達(dá)式的規(guī)則卵慰。
    2)可以通過正則表達(dá)式沙郭,從字符串中獲取我們想要的部分(例如:“ab10eee20ddd30”)

  3. 語法:
    /正則表達(dá)式/修飾符(可選)

  4. 方法:
    1)test():檢測字符串是否符合給定的規(guī)則,符合返回true,否則返回false
    2)exec():在字符串中查找符合規(guī)則的內(nèi)容裳朋,返回數(shù)組對象

  5. 正則表達(dá)式的語言:
    1)方括號:用于查找某個范圍的字符
    [abc]:表示任意一個字符
    [^abc]:表示不在其中的任意一個字符
    [0-9]:一個數(shù)字
    [a-zA-Z]:一個字母
    2)元字符:是擁有特殊含義的字符
    ^:從字符串的開始位置匹配
    $:從字符串結(jié)尾匹配
    \d:一個數(shù)字棠绘,相當(dāng)于[0-9]
    \D:一個非數(shù)字,相當(dāng)于[^0-9]
    \w:匹配包括下劃線的任意單詞字符再扭,相當(dāng)于[a-zA-Z0-9_]
    \W:匹配任意非單詞字符氧苍,相當(dāng)于[^a-zA-Z0-9_]
    .(點(diǎn)):匹配除了“\n”之外的任意單個字符
    | :或者
    ():將()中的表達(dá)式定義為“組”
    3)量詞:
    +:一次或多次
    *:任意多次(0到多次)
    ?: 零次或1次
    {n}:n次
    {n,}:至少n次
    {n,m}:n到m次
    練習(xí):驗(yàn)證一個日期字符串是否合法
    var s = "34";

  6. 修飾符:
    1)i:忽略大小寫比較
    2)g:執(zhí)行全局匹配(查找所有匹配而非找到第一個匹配后停止)
    var exp = /\d{2}/g;

     var s = "abcd10abce20ddd30xx";
     
     while(true){
         var arr = exp.exec(s);
         if(arr != null){
             document.write(arr+",");
         }else{
             break;
         }
     }
     //10,20,30,
    

    3)m:執(zhí)行多行匹配
    var exp = /ef$/m;//是否某一行以ef結(jié)尾

     var s = "abcdef\ngh";
     
     var b = exp.test(s);
     document.write(b);//true, 不加m,就是單行匹配泛范,返回false
    
  7. 字符串方法(部分)支持正則表達(dá)式
    1)replace(正則表達(dá)式,字符串):使用第二個參數(shù)的字符串替換第一個參數(shù)正則表達(dá)式匹配的內(nèi)容让虐。

     var s = "tom10marry20scott30zangsan";   
     var exp = /\d{2}/g;
     var s2 = s.replace(exp,"");//不加g,只替換第一個
     document.write(s2);
    

    2)split(正則表達(dá)式):使用正則表達(dá)式作為分隔符,返回分隔的數(shù)組

     var s = "tom10marry20scott30zangsan";           
     var exp = /\d{2}/;          
     var arr = s.split(exp);         
     document.write(arr);
    

    3)search(正則表達(dá)式):在字符串中查找正則表達(dá)式匹配的字符串罢荡,返回第一次找到的位置索引號赡突,沒有找到返回-1

     var s = "tom10marry207scott30zangsan";          
     var exp = /\d{3}/;          
     var index = s.search(exp);
     document.write(index);//10
    

    4)match(正則表達(dá)式):返回匹配的子串或null(沒有找到匹配)

     var s = "tom70marry20scott30zangsan";           
     var exp = /\d{2}/g;
     var s1 = s.match(exp);
     document.write(s1);
    

//加g選項(xiàng),返回匹配的數(shù)組(70区赵,20惭缰,30),不加g選項(xiàng)笼才,返回只有70一個元素的數(shù)組

驗(yàn)證身份證號
舊身份證為15位數(shù)字
新身份證為18為數(shù)字漱受,或17位數(shù)字,最后位x或X

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末骡送,一起剝皮案震驚了整個濱河市昂羡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌摔踱,老刑警劉巖虐先,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異派敷,居然都是意外死亡蛹批,警方通過查閱死者的電腦和手機(jī)撰洗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來腐芍,“玉大人差导,你說我怎么就攤上這事〉樵撸” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵冗酿,是天一觀的道長埠对。 經(jīng)常有香客問我,道長裁替,這世上最難降的妖魔是什么项玛? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮弱判,結(jié)果婚禮上襟沮,老公的妹妹穿的比我還像新娘。我一直安慰自己昌腰,他們只是感情好开伏,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著遭商,像睡著了一般固灵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上劫流,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天巫玻,我揣著相機(jī)與錄音,去河邊找鬼祠汇。 笑死仍秤,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的可很。 我是一名探鬼主播诗力,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼我抠!你這毒婦竟也來了姜骡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤屿良,失蹤者是張志新(化名)和其女友劉穎圈澈,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尘惧,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡康栈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片啥么。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡登舞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出悬荣,到底是詐尸還是另有隱情菠秒,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布氯迂,位于F島的核電站践叠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏嚼蚀。R本人自食惡果不足惜禁灼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望轿曙。 院中可真熱鬧弄捕,春花似錦、人聲如沸导帝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽您单。三九已至分飞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間睹限,已是汗流浹背譬猫。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留羡疗,地道東北人染服。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像叨恨,于是被迫代替她去往敵國和親柳刮。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 美食并不是指高大上的食物痒钝。 而是在每一個人心中自己喜歡的食物便是美食秉颗。 一粥一飯都是食物,只要你喜歡送矩,就是精選蚕甥。 ...
    渺兒姐閱讀 208評論 0 0
  • 如果一個人的初戀沉悶且冗長,通常都很少能夠修成正果栋荸。 高三的時候菇怀,別人都忙著備戰(zhàn)高考凭舶,我父母就早早地替我辦全了頂職...
    魏昊霖閱讀 1,838評論 24 42
  • 小妖卡卡Echo閱讀 124評論 0 0
  • 今天挺忙,一個人干活爱沟, 合理分配干活的順序 干活也就沒有那么亂帅霜! 工具擺放。配件擺放呼伸! 在忙也不能亂了
    京心達(dá)白金閱讀 129評論 0 0