js中的String對象、Array對象、Dictionary

轉自:http://www.kqiqi.com/knowledge/program/js-string.html


String對象

length屬性:獲取字符串的字符個數。(無論中文字符還是英文字符都算1個字符。)
charAt(index)方法:獲取指定索引位置的字符。(索引從0開始)
indexOf(‘字符串’,startIndex)方法:獲取指定字符串第一次出現的位置。startIndex表示從第幾個開始搜索。
split(‘分隔符’,limit);//根據分隔符將一個字符串返回爲一個數組。limit表示要返回的數組的最大長度(可自定義)。
substr(startIndex,len)//從startIndex開始,截取len個字符。
substring(startIndex,stopIndex)//從startIndex開始,截取到stopIndex位置(不包括stopIndex所在的字符)。
match()、replace()、search()方法,正則表達式相關。
例子:
   var uname = new String('a我不h是美女haha10086');
        /*
        alert(uname.length);
        alert(uname.charAt(6)); //返回a,不是h,索引從0開始。
        alert(uname.indexOf('h', 3)); //從索引爲3的字符開始搜索h,如果在索引爲3的字符前有h,也不予理會。
        */

        /*
        var reg = /\w+/g;
        //當採用全局模式g,的時候直接把所有匹配的元素返回到一個數組當中
        var result = uname.match(/\w+/g);
        alert(result.length);
        for (var i = 0; i < result.length; i++) {
        alert(result[i]);
        }
        */

        /*
        var reg = /^\w$/;
        var reg1 = new RegExp('\\w');
        */

        /*
        //不要忽略這裏的全局模式g,否則只能匹配第一個符合的元素
        //加上g以後,可以吧所有匹配正則表達式的元素都替換
        var result = uname.replace(/a/g, 'X');
        alert(result);
        */

        //search()方法與indexOf()方法都是返回找到字符串的第一次出現的索引,
        //只是search()方法可以用正則表達式,而indexOf()只能寫字符串。
        var result = uname.search(/\d{5}/);
        var resultIndexof = uname.indexOf('10086');
        alert(result);
        alert(resultIndexof);

    /*
        //spilt第一個參數是分隔符,第二個參數是要返回的最大元素個數。
        var result = uname.split(',', 3);
        alert(result.length);
        for (var i = 0; i < result.length; i++) {
        alert(result[i]);
        }
        */

        /*
        //substr從索引爲2的字符開始,截取3個字符,索引是從零開始的。
        var result1 = uname.substr(2, 3);
        alert(result1);
        */

        //substring從第2個索引開始截取,截取到第3個索引之前。(不包括第3個索引的字符)
        var result2 = uname.substring(2, 3);
        alert(result2);



Array對象

JavaScript中的Array對象就是數組,首先是一個動態數組,而且是一個像C#中數組、ArrayList、Hashtable等的超強綜合體。
數組的使用方式:
var names = new Array();//無需初始化長度,動態
names[0] = "tom";
names[1] = "jerry";
names[2] = "lily";
循環遍歷數組(for循環):
for (var i = 0; i < names.length; i++) {
    alert(names[i]);
}

循環遍歷數組(for in循環):類似於c#中的foreach
for (var i in names) {
   alert(names[i]);//如果直接輸出i是什麼?
}
使用for in循環可以遍歷對象的所有屬性。
for in循環其實遍歷的還是key。
數組的其他幾種聲明方式:
new Array(); 
new Array(size); 
new Array(element0, element0, ..., elementn);
var arr = ['China', 2008, true, 'Hello'];
arr[0]?'China'
arr[1]?2008



JS中的Dictionary
JS中的Array是一個寶貝,不僅是一個數組,還是一個Dictionary,還是一個Stack(棧集合,不能是Dictionary)。
var pinyins = new Array();
pinyins["人"] = "ren";
pinyins["口"] = "kou";
pinyins["手"] = "shou";
alert(pinyins["人"]);
alert(pinyins.人);
字典風格的簡化創建方式:
var arr = {“人”:”ren”,“口”:”kou”};//json格式。
像Hashtable、Dictionary那樣用,而且像它們一樣效率高。
不能直接用for循環遍歷,需要用for in循環。
只要有了Array你就同時擁有了數組、List、Hashtable,它就是JavaScript中的要你命三千,價格只要998.
    var arr = new Array();
        arr[0] = "tom";
        arr[1] = "jim";
        for (var i in arr) {//打印出來的是0tom、1jim證明了數組用法是Dictionary用法的一個特例而已。
            alert(i+arr[i]);
        }

Array的簡化聲明
JSON格式:
var arr={“name”:”tom”,”age”:18,”email”:’[email protected]’};
Json格式可以當做一個對象。
arr.name、arr.age、arr.email
var arr=[{“name”:”steve”,”age”:18},{“name”:”steve”,”age”:18];//json對象數組。
在Ajax中使用JSON格式傳輸數據非常方便。


JSON的一些其他寫法:
1.
var personalInfo = { "name": "周杰倫", "age": 20, "address": { "city": "beijing", "country": "China"} };
        alert(personalInfo.name);
        alert(personalInfo.age);
        alert(personalInfo.address.city);
        alert(personalInfo.address.country);

2.
var students = [{ "id": "1001", "name": "james" }, { "id": "1002", "name": "bob"}];
        for (var i = 0; i < students.length; i++) {
            alert(students[i].id + "===>" + students[i].name);
        }


Array的其他方法:
Array.join(“連接字符串”)//將數組中的元素通過指定的“連接字符串”連接起來,返回一個字符串。
Array.reverse();//將數組中的元素反轉。
Array.sort();//排序


練習

====================
1.求一個整數組中的最大值。定義成函數。
2.將一個字符串數組輸出爲|分割的形式,比如“梅西|卡卡|鄭大世”。不要使用JavaScript中的Join函數。arr1.join(“|”)將數組用分隔符連接成一個字符串。//自定義一個myJoin函數。
3. 將一個字符串數組的元素的順序進行反轉。{"3","a","8","haha"} {"haha","8","a","3"}。不要使用JavaScript中的反轉函數。提示:第i個和第length-i-1個進行交換。定義成函數。 myreverse數組同樣是傳遞引用,js出錯很麻煩。交換兩個變量。(測試一下是否會交換)(作業)


===========練習1====================
 var num = [1, 2, 344, 5, 6, 7];
        var res = GetMax(num);
        alert(res);

        function GetMax(nums) {
            var maxVal = nums[0];
            for (var i = 0; i < nums.length; i++) {
                if (nums[i] > maxVal) {
                    maxVal = nums[i];
                }
            }
            return maxVal;
        }
=============練習2==================
var strs = ['梅西', '卡卡', '鄭大世'];
        //var str = strs.join('|');
        var str = myJoin('|', strs);
        alert(str);


        function myJoin(sep, strArray) {
            var result = '';
            for (var i = 0; i < strArray.length - 1; i++) {
                result += strArray[i] + sep;
            }
            result += strArray[strArray.length - 1];
            return result;
        }
===========練習3=====================
 var strArr = ["3", "a", "8", "haha"];
        //strArr.reverse();
        myReverse(strArr);

        for (var i = 0; i < strArr.length; i++) {
            document.write(strArr[i] + '<br/>');
        }

        function myReverse(strArray) {
            for (var i = 0; i < strArray.length / 2; i++) {
                var tmp = strArray[i];
                strArray[i] = strArray[strArray.length - 1 - i];
                strArray[strArray.length - 1 - i] = tmp;
            }
        }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章