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)); //返回'女',不是'美',索引從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”:’tom@itcast.cn’};
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;
}
}
=======================================