/*
由于javascript是一種無(wú)類(lèi)型語(yǔ)言,所以一個(gè)數組的元素可以具有任意的數據類(lèi)型,同一個(gè)數組的不同元素
可以具有不同的類(lèi)型,數組的元素設置可以包含其他數組,這樣就可以創(chuàng )建一個(gè)復雜的數組了.
并且在這點(diǎn)上說(shuō)javascript作為一種腳本語(yǔ)言不同于那種嚴格的面向對象的c++.c#,java了.具有更高的靈活性.
*/
/*
*在javascript1.1和其后的版本中,數組是用構造函數Array()和運算符new來(lái)創(chuàng )建,
可用以下的三種方式來(lái)創(chuàng )建javascript 中的數組.
*/
var a=new Array();
var b=new Array(5,4,3,"first","test,string");
var c=new Array(20);
a[1.23]="test";
document.write("a[1.23]="+a[1.23]);
//相信每位從強類(lèi)型的編程語(yǔ)言學(xué)習javascript時(shí),絕對會(huì )以為上面這種操作感到驚訝,
//float數據也作數組的下標了,事實(shí)上 并非如您所想
//javascript在您是用負數,浮點(diǎn)數,(或布爾型,對象,其他值時(shí)),javascript會(huì )將它轉換為一個(gè)字符串
//用生成的字符串作為對象的屬性名字,而不是定義了一個(gè)新的數組元素
//上面的實(shí)例事實(shí)就是為a 創(chuàng )建了一個(gè)名為:"1.23"的屬性.
document.write("a.length="+a.length);
document.write("b.length="+b.length);
document.write("c.length="+c.length);
a[3]="Test";
document.write("<br />a[3]="+a[3]);
document.write("<br/>a.length="+a.length);
//以上測試也很明確我們用整數作為數組的下標是才會(huì )真正為數組添加一個(gè)元素,
//這里用數組的長(cháng)度來(lái)體現了javascript的數組中的奧妙。
//通過(guò)設置數組的length屬性能過(guò)截斷數組的長(cháng)度。
a.length=3;
if (a[3]==undefined)
{
document.write("<br />在a.length="+a.length+"后,a[3]="+a[3]);
}
else
{
document.write("<br />在a.length="+a.length+"后,a[3]="+a[3]);
}
//這里測試我們的多維數組元素
/*
*javascript中實(shí)際上是不支持多維數組
*但是我們將一個(gè)一維數組的元素再賦給其一個(gè)一維數組,這樣就看起來(lái)就實(shí)現了多維數組了,但
實(shí)際上他還是個(gè)一維數組,這和我們理解c語(yǔ)言的數組時(shí)的那種想法一樣,但他們的實(shí)現機制是不一樣的。
*/
var g=new Array(3);
g[3]=a;
g[3][2]="Test"
document.write("<br />g[3][2]="+g[3][2]);
//數組join()方法
for (var i=0;i<20 ;i++ )
{
c[i]=i;
document.write("<br />c[i]="+c[i]);
}
document.write("<br/>c的元素join()方法后是:"+c.join());
//數組的reverse()方法
c.reverse();
document.write("<br />c的元素在reverse()方法再join()后的結果是:"+c.join("|"));
//concat()方法的測試
var h=new Array(1,2,3);
h= h.concat([4,5]);
//但是concat函數不會(huì )遞歸地展開(kāi)一個(gè)元素為數組的數組。
h=h.concat(6,7,[9,[10,20]]);
document.write("<br />h.length="+h.length+"<br />"+h);
document.write("h[8]="+h[8]);
//slice()方法
document.write("<br>h.slice(4,5)="+h.slice(4,5));
document.write("h.slice(5,9)="+h.slice(5,9))
//slice()方法:返回的數組包含有第一個(gè)參數指定的元素和那個(gè)元素開(kāi)始到第二個(gè)參數指定的
//元素為止的元素但不包含第二個(gè)參數所指定的元素。
//splice()方法
//splice()方法是插入或刪除數組元素通用的方法。
/*
splice函數第一個(gè)參數指定了要插入或刪除的元素在數組中的位置。
第二個(gè)參數指定了要從數組中刪除的元個(gè)數
在第二參數之后可以有任意多個(gè)參數,它們指定的是從第一個(gè)參數指定的位置處插入的元素。
第一個(gè)元素及后續元素,做出相應的移動(dòng)。
*/
document.write("<br />h.splice(8,1)后的h為::"+h.splice(8,1));
//document.write("<br />h.splice(8,0,'a','b','Test')后的h為::"+h.splice(8,0,'a','b','Test'));
h.splice(7,0,'a','b','Test');
document.write("<br />h.splice(7,0,'a','b','Test')后的h為:"+h);
//javascript中的數組作為堆棧時(shí)和php類(lèi)似
//這點(diǎn)有趣更有用。
//以下是作為堆棧是使用的小實(shí)例
/*
push方法是將一個(gè)或多個(gè)新元素附加到數組的尾部,然后返回數組的新長(cháng)度。
pop將刪除數組的最后一個(gè)元素,堅守數組的長(cháng)度,返回他刪除的值。
*/
var stack=new Array();
stack.push(1,2);
document.write("<br>stack的元素是:"+stack);
document.write("<br />stack.length="+stack.length);
document.write("<br>stack.pop()返回的結果是:"+stack.pop());
document.write("<br />stack.length="+stack.length);
//以下是作為隊列使用的小實(shí)例
/*
unshift方法將一個(gè)或多個(gè)元素添加到數組元素的頭部,然后把已有的元素移動(dòng)到下標最大的位置已騰出空間
,它返回的是主族的新長(cháng)度。
方法shift是刪除并返回數組的第一個(gè)元素,然后將后面的所有元素都向前移動(dòng)以填補第一個(gè)元素留下的空白。
*/
var list=[];
list.unshift(6,2);
document.write("<br >list的內容為:"+list);
document.write("<br>list的shift方法是:"+list.shift());
//此外就剩下,我們在java中熟悉的toString()方法 了
//It's a piece of cake!
document.write(c.toString());
//說(shuō)白了,其實(shí)數組的toString()方法和無(wú)參數的join()的效果是完全相同
//OK,this's chapter for Array,that's all!
</script>
聯(lián)系客服