Javascript入門學習第四篇 js對象和數組第2/2頁
更新時間:2008年07月06日 10:00:06 作者:
上篇文章講了js中的變量,表達式,和運算符 還有一些 js 語句.
這章我們來探討js中的對象和數組。
7, 添加數組的內存使用:
a[10] = “test” ; //添加新的元素
內存的使用:
比如:
a[0] = “1” ;
a[10] =” 10” ;
那么js值給下標為0 和10的元素分配內存,中間的9個元素不被分配;
注:數組也可以添加到對象中;
比如;
var a = new Circle(1,2,3);
a[0]= “test” ;
這個例子定義了一個名為” 0 “的新對象屬性。
只將數組元素添加到一個對象中并不會使它成為數組。
8, 刪除數組:
var a = [1,2];
delete a[0];
alert(a[0]) //輸出 undefined
alert(a[1]) //輸出 2
由例子可以看出,delete刪除其實沒有真正刪除,只不過把元素設置為undefined;
如果要真正刪除,可以使用Array.shift(),等方法。
比如:
var a = [1,2];
delete a[0];
alert(a[0]) //輸出 undefined
alert(a[1]) //輸出 2
a.shift(); //刪除數組的第一個元素
alert(a[0]) //輸出 2
alert("length:"+a.length);
alert(a[1]) //輸出 undefined ; 1已經被刪除了,其實數組已經的長度只有 1 了;
9,數組的length:
a[49] = “a”;
// 那么這個數組的長度是 50 ;
length屬性經常用于遍歷數組元素;
比如:
var a = [“a” , “b “ ,”c” ];
for(var i = 0 ; i< a.length ; i++){
alert(a[i]);
}
這個是在假定元素是連續(xù)的,如果不是這種情況:
必須檢測每個元素是否被定義 : 比如:
for(var i = 0 ; i< a.length ; i++){
if(a[i]){
alert(a[i]);
}
}
多維數組: a[i][j] ;
10,數組的一些方法:
1):join() 方法:
把一個數組的所有元素都轉換成字符串。
比如:var a = [1,2,3];
var s = a.join(); // 輸出 s==1,2,3
當然也可以 指定一個分隔符;
比如;
s = a.join(“,”);
這個方法跟String.split()相反, split()將一個字符串分割成幾個片段來創(chuàng)建數組;
2):reverse () 方法:
把一個數組顛倒。
var a = new Array(1,2,3);
a.reverse();
var s = a.join(); //s == “3,2,1”
3):sort() 方法:
排序
♂:如果不給傳參數,那么按照字母順序對數組元素排序。
var a = new Array(“ee”,”df”,”b”);
a.sort()
var s = a.join(“, ”); // s == “b, df, ee”
♂:如果傳參數:
比如:
var a = [33,4,1111,222]
a.sort(); // 排序 : 1111 ,222 ,33,4
a.sort(function(x,y){
return x-y;
});
var s = a.join(); //輸出 4, 33,222,1111
//可以從例子看出,排序如果x > y ,那么第一個參數就排在第2個參數后,
比如; 1111 ,222 -? 1111-222>0 -? 則 222 , 1111
另外注意下 字母排序:因為js是區(qū)分大小寫,所以排序的時候,把字符統(tǒng)一成大寫或者小寫,再排序。
4):concat() 方法:
var a = [1,2,3];
a= a.concat(4, [5,6],7);
a=a.join(); //輸出 1,2,3,4,5,6,7
alert(a)
注意:
如果是數組里面還有數組 ,就不能展開了。
比如:
var a = [1,2,3];
a = a.concat(4,[5,[6,6]],7);
alert(a); //這個看不出來
a = a.join("|");
alert(a); //分割后,注意有個逗號
-------------------------------------
var c = [1,2,3];
var d =new Array(1,2,3);
alert(c); //1,2,3
alert(d); //1,2,3
//之所以不輸出Object ,是因為
//數組是一個具有額外功能層的對象.
//我們記住他的特殊性。
5):slice() 方法:
返回數組某一個片段。跟字符串的substring方法類似。
6):splice() 方法:
首先他跟 slice 方法 只有一個字母的差別,不過用處完全不同。
他可以用來刪除。
var a = [1,2,3];
a = a.splice(0,2);
alert(a); // 輸出 1, 2
a = a.splice(1,2);
alert(a); // 輸出 2 。 如果是 a = a.splice(0 , 1) ; 輸出 1
a = a.splice(1,2);
alert(a); // 沒有刪除任何數組 , 輸出 空 數組
他也可以插入數組。具體方法:
var array1 = new Array("1","2","3","4");
array1.splice(1,0,"5");//在 第2個元素后面,插入 5 ; 如果第2個參數為0,則不刪除。
document.write(array1+"<br>"); //輸出 1, 5 ,2 ,3,4
array1.splice(2,3,"7","8") // 刪除 第3個的 元素后的 3個元素。也就是 第3個,第4個,第5個元素。然后在這個位置上插入7,8
document.write(array1);//輸出 1, 5 ,7,8
注意:和concat()不同,splice并不將他插入的參數展開。也就是如果插入一個數組,他就是插入數組本身,還不是數組的元素。
而concat()插入數組的話,就會把數組展開,插入數組中的元素,不過當插入的數組里
還有數組的時候,就不會展開了。
7):push() 方法和pop()方法:
push(): 將一個或者多個數組 附加到數組的尾部。
pop() : 刪除數組的最后一個元素。
var array1 = new Array("1","2","3","4");
array1.push("5");
document.write(array1+"<br>"); //輸出 1, 2 ,3 ,4,5
array1.pop()
document.write(array1);//輸出 1, 2 ,3 ,4
8):unshift() 方法和shift ()方法:
跟push和pop唱反調。。。
unshift (): 將一個或者多個數組 附加到數組的頭部。
shift ():刪除數組的第一個元素。
數組的一些方法是比較多,看起來也比較煩。所以大家應該有點耐心。
另外可以參考這篇文章;
http://www.cssrain.cn/article.asp?id=438
總結:這章主要講了對象和數組的一些方法。比較難記和難理解。不過任何事情都是從難到容易的過程。一次沒看懂,再看一次。。。書讀百遍,其意自現(xiàn)。。。。。。
也許你不需要讀一百遍呢. ^_^。
是不是感覺看了這么多js概念,已經迫不及待的想自己寫點例子什么的。好吧。
下章我們 來點實戰(zhàn)的。。。。
如果還有不懂,可以google 搜索資料. (