前端一周02 JavaScript 字符串照激、 數(shù)組

   字符串
  String 用來處理文本(字符串)
  
            字符串的創(chuàng)建
    1. 字面量的創(chuàng)建方式
    //  字面量的聲明
    var str = "sfssfsf";   //  用""或者是''括起來的字段就叫字符串
    2.通過new的方式  (構(gòu)造函數(shù)創(chuàng)建)
    //  構(gòu)造函數(shù)創(chuàng)建
    var str = new String('hello');   //  新創(chuàng)建一個(gè)對象霎冯,并且把存放的值賦予給對象
    3. 直接使用String()創(chuàng)建   
    //  直接使用String() 來去創(chuàng)建
    var str = String('hello');   //  直接辦存放的值轉(zhuǎn)換為最原始的字符串并返回值
    屬性:length   
    字符串的length是其字符串中所有字符的長度
    獲取字符串的長度
    var str = 'www.baidu.com';
    console.log(str.length)
    
   方法:
   
   1.charAt()
        在字符串中獲取某個(gè)位置的字符
    //  charAt()
        var s = str.charAt(10);
        console.log(s);
    2. charCodeAt()
        獲取字符串中某個(gè)位置的字符對應(yīng)的Unicode編碼
    
    3.indexOf()
            // 對字符串進(jìn)行檢索
            //  返回回來的值是檢索字符在字符串中的下標(biāo)铃拇,沒有檢索到返回值是-1
            //  檢索時(shí)時(shí)把檢索的字符當(dāng)做是一個(gè)整體來處理
        var str = 'www.baidu.com';
        var ind = str.indexOf('comn');
        console.log(ind);
        
    4.match()
        找到匹配正則表達(dá)式的集合
        var str = '蘇久福今年25,蘇久福是男生沈撞,蘇久福身高190';
        var reg = /蘇久福/g;
            
        var arr = str.match(reg);
        console.log(arr);
        
    5.replace()
        替換匹配正則表達(dá)式的字符
        var str = '蘇久福今年25慷荔,蘇久福是男生,蘇久福身高190';
        var reg = /蘇久福/g;
        var newStr = str.replace(reg,'王瑞');
        console.log(newStr);
    6.slice()
        //  截取字符串,可以傳入兩個(gè)參數(shù)关串,一個(gè)是startSlice,一個(gè)是endSlice
        //  如果只傳入一個(gè)參數(shù)拧廊,那么就會默認(rèn)從參數(shù)對應(yīng)的下標(biāo)開始截取一直到結(jié)束
        var str = '蘇久福今年25,蘇久福是男生晋修,蘇久福身高190';
        var ss = str.slice(0,3);   //  [start,end)  
        console.log(ss);
    
    7.split()
        將字符串分割為數(shù)組,通過制定的字符來分割
        var str = '蘇久福今年25吧碾,蘇久福是男生,蘇久福身高190';
        var arr = str.split('墓卦,');
        console.log(arr);
    
    8. substr()  substring()
        提取指定位置在字符串中的字符
        //   substr()   substring()
        //  這兩個(gè)方法如果只傳入一個(gè)參數(shù)倦春,他們結(jié)果是一致的
        //  substr  第二個(gè)參數(shù)代表從第一個(gè)參數(shù)位置開始截取的字符長度
        //  substring  第二個(gè)參數(shù)也是提取字符的下標(biāo),從小的開始提取到大的下標(biāo)位置
        var str = 'www.baidu.com';
            
        var newstr = str.substr(5,1);
        console.log(newstr);
        var newstr1 = str.substring(5,0);  // [5,10)
        console.log(newstr1);
        console.log(newstr == newstr1);   // true
    
    9. toUpperCase()   toLowerCase()
        toUpperCase()   將字符轉(zhuǎn)換為大寫
        toLowerCase()   將字符轉(zhuǎn)換為小寫
        
    //  toUpperCase()
        
        var str = 'www.baidu.com';
        
        var newstr = str.toUpperCase();
        console.log(newstr);

       數(shù)組
    Array 用于單個(gè)變量存儲多個(gè)值
    var arr = [1,2,3,4,5];    
        找值通過下標(biāo)去尋找
    創(chuàng)建
        1.  字面量
        var arr = [];   //  字面量創(chuàng)建
        
        2.  new 
        var arr = new Array();      // 返回一個(gè)空數(shù)組
        
        var arr1 = new Array(2);    //   返回一個(gè)規(guī)定了size(元素個(gè)數(shù))的數(shù)組
        
        var arr2 = new Array(1,3,5,10,9);   //   返回了一個(gè)定義了初始值的數(shù)組
            
        console.log(arr,arr1,arr2);
   
    屬性:
        length   返回?cái)?shù)組的長度/返回?cái)?shù)組元素的總個(gè)數(shù)
   
    方法:
        1. concat()
           將多個(gè)數(shù)組合并并返回合并后的數(shù)組
           var arr1 = [1,2,3];
            var arr2 = [4,5,6];
            var arr3 = [7,8,9];
            
            var arr = arr1.concat(arr2,arr3);
            console.log(arr);
        
        2.push()
                   將要添加的元素作為數(shù)組最后一個(gè)添加到數(shù)組中
            var arr = [];
            arr.push(1);
            
            arr.push(3);
            console.log(arr);       
                   
        3.pop()
            刪除最后一個(gè)元素并返回
            //   push   pop
                
            var a = arr.pop()
            console.log(a);
            console.log(arr);
        
        4. unshift()
            將要添加的元素作為數(shù)組的第一個(gè)元素添加到數(shù)組中
            
        5. shift()
            刪除數(shù)組的第一個(gè)元素并返回
        
        6.reverse()
            將數(shù)組元素反序來排列
            //  reverse
            var arr = [1,2,3,4,5,6,7,8,9];
            var newArr = arr.reverse()
            console.log(newArr);
        7.slice()
            在已有的數(shù)組中返回制定的元素
            // slice
            var arr = [1,2,3,4,5,6,7,8,9];
            var newArr = arr.slice(5,7);  //  [5,7)
            console.log(newArr);
        8.sort()
            對數(shù)組進(jìn)行排序
            //  sort
            var arr = [12,2,34,34,13,1000,24];
            var arr1 = arr.sort(function(b,a){
                return b-a;     //  函數(shù)中的第一個(gè)參數(shù) - 函數(shù)中的第二個(gè)參數(shù)  代表正序排列(從小到大)
                                //  函數(shù)中的第二個(gè)參數(shù) - 函數(shù)中的第一個(gè)參數(shù)  代表反序排列(從大到新浼簟)
            })
            console.log(arr1);
        9.splice()
            刪除元素并向數(shù)組中添加新元素
            //  splice
            var arr = ['sss','aaa','bbb'];
            var arr1 = arr.splice(1,1,'ccc');   //  返回刪除的元素
            //  splice 第一個(gè)參數(shù)刪除的開始下標(biāo)  睁本,第二個(gè)參數(shù)代表刪除元素的個(gè)數(shù) , 第三個(gè)參數(shù) 代表要想數(shù)組中添加的新元素、位置為刪除元素在原來數(shù)組中的位置
            console.log(arr,arr1);
            
        10. join()    toString()
            將數(shù)組轉(zhuǎn)換為字符串
            //  join
            var arr = ['hello','world','sujiufu'];
            var str = arr.join("====");
            // 通過制定的字符將數(shù)組中所有的元素鏈接成一個(gè)字符串返回
            console.log(str);
            //  toString
            var str = arr.toString();
            //  把所有的元素直接轉(zhuǎn)換為字符串返回忠怖,
                          并且數(shù)組中元素分隔符也加到了字符串中
            console.log(str);

   數(shù)據(jù)傳輸格式
   
   JSON
        JSON ?
        JSON 指Javascript對象表示法呢堰,  JavaScript Object Notation
        JSON 是輕量級的文本數(shù)據(jù)傳輸格式
        JSON 獨(dú)立于語言
            JSON使用了javascript語法來描述數(shù)據(jù)對象,但是JSON仍舊獨(dú)立于語言和平臺,JSON解析器和JSON庫支持許多不同的編程語言凡泣。
        JSON 具有自我描述性枉疼,更容易的去理解。
        
        為什么要使用JSON鞋拟?
            JSON對于我們應(yīng)用來說骂维,JSON比XML更容易的去使用
            
        JSON語法?怎么去書寫贺纲?
            JSON 主要是以鍵值對的形式存在
            
        JSON的值可以接收哪幾種類型航闺?
            String
            Number
            Boolean
            Array
            Object
            Null
            
        //  復(fù)雜類型
        
        Array
        Object
        
        JSON中Array?
            數(shù)組不止是接受簡單的數(shù)據(jù),還可以接受對象作為元素
        JSON中Object?
            對象里也可以接受對象作為元素,但注意的是需要以鍵值對的方式存在
        
        怎么使用JSON潦刃?

        //   datasrc["鍵的名字"]              //  [] 這里面可以接收變量
        var name = "ObjectType";
        
        var obj = datasrc[name];
        
        console.log(obj["option"]);
        
        //   datasrc.ObjectType               // 不能接受變量
        var name = "ObjectType";
        
        var obj = datasrc.ObjectType;
        
        console.log(obj["option"]);
        
        js方式去引入的
        
        JSON文件?
          .json  擴(kuò)展名 
          不能使用單引號侮措,必須得使用雙引號,
          每一個(gè)鍵值對之間必須的使用,隔開
          
        JSON兩個(gè)重要的方法?
        
            JSON 轉(zhuǎn)換為字符串的方法
                JSON.stringify(json);
          
          
            字符串轉(zhuǎn)換為JSON
                JSON.parse(str);
   
            注意:字符串轉(zhuǎn)換為JSON福铅,那么字符串必須是json嚴(yán)格格式的字符串
   
   
   XML
   
        和HTML很像很像
        XML  被設(shè)計(jì)用來傳輸和存儲數(shù)據(jù)的
        
        XML  可擴(kuò)展標(biāo)記語言  (EXtensible Markup Language)
   
        XML  宗旨是傳輸數(shù)據(jù)      HTML 是用來顯示數(shù)據(jù)
        
        XML  中可以自由的定義標(biāo)簽
        
        XML  也具有自我描述性
        
        XML文件?
            標(biāo)志      <?xml version="1.0" encoding="utf-8"?>
            標(biāo)簽一定是閉合雙標(biāo)簽
                <root> </root>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <form>
            <input type="text" id="username" />
            <input type="password" id="password" />
            <button id="login">登錄</button>
            <button id="regist">注冊</button>
        </form>
        
        <script>
        //   后臺
        var database = {};     //  database  是數(shù)據(jù)庫
        
        database.users = [];      //  創(chuàng)建一個(gè)表
        
        database.users.push({           //  向表中插入一條數(shù)據(jù)
            "id":1,
            "username":"admin",
            "password":"123456",
            "type":"admin"
        })
        
        //   注冊的registFun
        function registFun(option){        //   注冊接受數(shù)據(jù)
            var flag = true;
            database.users.forEach(function(e,i){//傳一個(gè)函數(shù) e代表每一個(gè)元素i每個(gè)元素的索引值
                if(e.username == option.name){
                    flag = false;
                }
            })
            if(flag){
                var lenOld = database.users.length;
                database.users.push({           //  注冊
                    "id":database.users.length+1,
                    "username":option.name,
                    "password":option.password,
                    "type":"user"
                })
                var lenNew = database.users.length;
                if(lenNew - lenOld == 1){
                    return '{"ok":true,"mes":"注冊成功"}';        //   后臺給前臺返回一個(gè)字符串
                }else{
                    return '{"ok":false,"mes":"注冊失敗"}'; 
                }
            }else{
                return '{"ok":false,"mes":"用戶名存在"}';
            }
            
        }
        
        //   登錄的loginFun
        function loginFun(str){    ///   op 就是前臺發(fā)送過來的數(shù)據(jù)
            //   查詢用戶名是否存在
            var obj = null;     //  用戶   默認(rèn)用戶是null
            database.users.forEach(function(e){
                if(e.username == op.name){
                    obj = e;
                }
            })
            if(obj != null){
                if(obj.password == op.password){
                    return '{"ok":true,"mes":"登陸成功"}';
                }else{
                    return '{"ok":false,"mes":"密碼錯(cuò)誤"}';
                }
            }else{
                return '{"ok":false,"mes":"用戶不存在"}';
            }
        }
        
        
        
        
        //   前臺
        
        var regist = document.getElementById('regist');
        var login = document.getElementById('login');
        var username = document.getElementById('username');
        var password = document.getElementById('password'); 
        
        //  注冊
        regist.onclick = function(){           //  注冊完成
            var user = username.value;
            var pass = password.value;
            if(user !== "" && user.length>=3 && pass != "" && pass.length>=6){
                var result = registFun({            //   后臺發(fā)送數(shù)據(jù)    并接受返回的消息
                        "name":user,
                        "password":pass
                    });
                var json = JSON.parse(result);
                if(json.ok){
                    alert(json.mes);
                }else{
                    alert(json.mes);
                }
            }
            return false;
        }
        
        
        //   登錄
        
        login.onclick = function(){
            var user = username.value;
            var pass = password.value;
            if(user !== "" && user.length>=3 && pass != "" && pass.length>=6){
                //   往后臺發(fā)送請求
                var result = loginFun({     //  {} 向后臺發(fā)送的數(shù)據(jù)
                    "name":user,
                    "password":pass
                });
                var json = JSON.parse(result);
                if(json.ok){
                    alert(json.mes);
                }else{
                    alert(json.mes);
                }
            }
            return false;
        }
        
        
        /*
         
         *      1.前臺獲取用戶輸入的用戶名和密碼
         *      2.驗(yàn)證用戶名和密碼的格式是否正確
         *      3.開始往后臺發(fā)送數(shù)據(jù)
         * 
         *      4.后臺接受數(shù)據(jù)萝毛,并且需要對數(shù)據(jù)做相應(yīng)的處理                                 class User{}
         *          //   'username=admin&password=123456'
         *          //   {username:admin,password:123456}
         *          //   '{"username":"admin","password":123456}'
         *      5.處理數(shù)據(jù),拿到相應(yīng)的參數(shù)  
         *      6.  login -> 登錄功能            public void login(username,password){}
         *          regist -> 注冊功能      public void regist(username,password){}
         * 
         *      7. 程序處理完以后返回相應(yīng)的結(jié)果                         //   重定向     登陸成功                      
         *                                       //   重載      登陸失敗
         * 
         *      //   需要向前臺發(fā)送數(shù)據(jù)          
         * 
         *      7.程序處理完返回相應(yīng)的結(jié)果并發(fā)送給前臺
         * 
         *      8.接受后臺發(fā)送回來的消息                   //  '{"ok":true,"mes":"登錄成功"}'
         * 
         *      9.處理發(fā)送回來的消息                          //     登錄成功    跳轉(zhuǎn)頁面                       登錄失敗          顯示錯(cuò)信息
         * 
         * 
         * 
         * 
         * 
         * 
         * */
        
        
        </script>
        
        
    </body>
</html>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末滑黔,一起剝皮案震驚了整個(gè)濱河市笆包,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌略荡,老刑警劉巖庵佣,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異汛兜,居然都是意外死亡巴粪,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門粥谬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肛根,“玉大人,你說我怎么就攤上這事漏策∨烧埽” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵掺喻,是天一觀的道長芭届。 經(jīng)常有香客問我,道長感耙,這世上最難降的妖魔是什么褂乍? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮即硼,結(jié)果婚禮上逃片,老公的妹妹穿的比我還像新娘。我一直安慰自己只酥,他們只是感情好褥实,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著层皱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赠潦。 梳的紋絲不亂的頭發(fā)上叫胖,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機(jī)與錄音她奥,去河邊找鬼瓮增。 笑死怎棱,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的绷跑。 我是一名探鬼主播拳恋,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼砸捏!你這毒婦竟也來了谬运?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤垦藏,失蹤者是張志新(化名)和其女友劉穎梆暖,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掂骏,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡轰驳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了弟灼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片级解。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖田绑,靈堂內(nèi)的尸體忽然破棺而出勤哗,到底是詐尸還是另有隱情,我是刑警寧澤辛馆,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布俺陋,位于F島的核電站,受9級特大地震影響昙篙,放射性物質(zhì)發(fā)生泄漏腊状。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一苔可、第九天 我趴在偏房一處隱蔽的房頂上張望缴挖。 院中可真熱鬧,春花似錦焚辅、人聲如沸映屋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽棚点。三九已至,卻和暖如春湾蔓,著一層夾襖步出監(jiān)牢的瞬間瘫析,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贬循,地道東北人咸包。 一個(gè)月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像杖虾,于是被迫代替她去往敵國和親烂瘫。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

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