本文介紹如下幾個方面的內(nèi)容:
1.如何創(chuàng)建數(shù)組
2.如何對數(shù)組進行操作(添加,刪除,讀取)
3.數(shù)組常見方法和屬性
如何創(chuàng)建一個數(shù)組,一般地根據(jù)初始化設定簡單分為3種:
1.單純創(chuàng)建數(shù)組:
var arr=new Array();
要點:用new關鍵字創(chuàng)建數(shù)組對象Array(),Array()對象是一個本地類,可以用new創(chuàng)建一個對象后使用
2.創(chuàng)建數(shù)組的同時規(guī)定數(shù)組大小:
var arr=new Array(10);//這里就創(chuàng)建了一個初始化大小為10的數(shù)組
注意:當使用數(shù)組大小操作初始化大小時,數(shù)組會自動被撐大,不會像C語言那樣發(fā)生錯誤.動態(tài)增長是js數(shù)組的一個性質.另外,js中支持最大數(shù)組長度為
4294967295
3.直接初始化:
var arr=new Array("love","hate","pain");//這里就直接初始化了數(shù)組
或var arr=["happy","cute","scare"];//括號也可以聲明一個數(shù)組對象
當然,類似C語言,可以定義2維3維和多維的數(shù)組,例如:
<script language=Javascript>
var myArray = new Array();
for(var i=0;i<10;i++ )...{
myArray[i]=new Array();
myArray[i][0]=Math.floor(Math.random()*10);
myArray[i][1]=Math.floor(Math.random()*10);
myArray[i][2]=Math.floor(Math.random()*10);
myArray[i][3]=Math.floor(Math.random()*10);
myArray[i][4]=Math.floor(Math.random()*10);
myArray[i][5]=Math.floor(Math.random()*10);
myArray[i][6]=Math.floor(Math.random()*10);
myArray[i][7]=Math.floor(Math.random()*10);
myArray[i][8]=Math.floor(Math.random()*10);
}
myArray.sort( function(x, y) ...{
return (x[0]==y[0])?((x[4]==y[4])?(x[8]-y[8]):(x[4]-y[4])):(x[2]-y[2])
});
for(var i=0;i<myArray.length;i++ )...{
document.write(myArray[i].join(",") + "<br/>");
}
</script>
數(shù)組的屬性:length
arr.length返回數(shù)組arr的長度,常見于循環(huán)中對數(shù)組的遍歷,比如:
for(var i=0;i<arr.length;i++){
執(zhí)行部分
}
數(shù)組元素的訪問: arr[index],其中index表示索引即數(shù)組基數(shù),從0開始,共有arr.length個元素.比如: arr[0]訪問第一個數(shù)組元素,arr[1]訪問第二個數(shù)組元素....依
次類推 數(shù)組的操作方法:先概覽下下面的這些操作數(shù)組常用的方法(13個)
toString(),valueOf(),toLocalString(),join(),split(),slice(),concat(),
pop(),push(),shift(),unshift(),sort(),splice()
下面逐一分析這些方法的功能和用法.
toString(),valueOf(),toLocalString():
功能:返回數(shù)組的全部元素
注:數(shù)組名也可以返回整個數(shù)組
代碼:
var m=["am","bm","cm"];//用括號聲明一個數(shù)組對象
alert(m.toString());//toString()返回數(shù)組對象的所有內(nèi)容,用逗號分割,即am,bm,cm
alert(m.valueOf());//valueOf()也返回數(shù)組對象的所有內(nèi)容
alert(m.toLocaleString());//toLocaleString()也返回數(shù)組對象的所有內(nèi)容,但有地區(qū)語言區(qū)別,暫不研究
alert(m);//數(shù)組名也返回數(shù)組對象的所有內(nèi)容
join():
功能:把數(shù)組各個項用某個字符(串)連接起來,但并不修改原來的數(shù)組
代碼:
var m=["am","bm","cm"];//用括號聲明一個數(shù)組對象
var n=m.join("---");//用---連接am,bm,cm.
alert(m.toString());//m并沒有被修改,返回am,bm,cm
alert(n);//n是一個字符串,為am---bm---cm
split():
功能:把一個字符串按某個字符(串)分割成一個數(shù)組,但不修改原字符串
代碼:
var str="I love maomao,I am caolvchong";
var arr=str.split("o");//按字符o把str字符串分割成一個數(shù)組
alert(arr);//輸出整個數(shù)組
slice():返回某個位置開始(到某個位置結束)的數(shù)組部分,不修改原數(shù)組
代碼:
var m=["am","bm","cm","dm","em","fm"];
var n=m.slice(2);//返回第二個元素bm后面的元素,即cm,dm,em,fm
var q=m.slice(2,5);//返回第二個元素后到第五個元素,即cm,dm,em
alert(n);
alert(q);
數(shù)組對象的棧操作:
push():數(shù)組末尾添加一個項
pop():刪除數(shù)組最后一個項
代碼:
var m=["am","bm","cm","dm","em","fm"];
m.push("gm");//在數(shù)組末尾添加元素gm
alert(m);
m.pop();//刪除數(shù)組最后一個元素gm
alert(m);
數(shù)組對象的隊列操作:
unshift():數(shù)組頭添加一個項
shift():刪除數(shù)組第一個項
代碼:
var m=["am","bm","cm","dm","em","fm"];
m.unshift("gm");//在數(shù)組第一個元素位置添加元素gm
alert(m);
m.shift();//刪除數(shù)組第一個元素gm
alert(m);
sort():數(shù)組按字符的ASCII碼進行排序,修改數(shù)組對象
注:即便是數(shù)字數(shù)組,也將轉化為字符串來進行比較排序
代碼:
var m=["am","fm","gm","bm","em","dm"];
m.sort();//按字母序排序
alert(m);
concat():在數(shù)組尾添加元素,但不修改數(shù)組對象
代碼:
var m=["am","bm"]
var n=m.concat("cm");//添加一項cm,并且賦予新數(shù)組對象
alert(m);//原數(shù)組沒有被修改
alert(n);//輸出新數(shù)組對象
splice():在數(shù)組的任意位置進行添加,刪除或者替換元素,直接修改數(shù)組對象
細節(jié):
splice()有三個參數(shù)或三個以上參數(shù),前兩個是必須的,后面參數(shù)是可選的
進行添加:splice(起始項,0,添加項)
進行刪除:splice(起始項,要刪除的項個數(shù))
進行替換:splice(起始項,替換個數(shù),替換項) 這個其實是添加刪除的共同結果
代碼:
var m=["am","bm"]
m.splice(1,0,"fm","sm");//在第一項后面添加fm和sm,返回am,fm,sm,bm
alert(m);
m.splice(2,1);//刪除第二項后面一項(即第三項sm,返回am,fm,bm)
alert(m);
m.splice(2,1,"mm");//替換第二項后面一項(即第三項,返回am,fm,mm)
alert(m);
在有的教程上沒有提到數(shù)組對象,都用自定義的數(shù)組,沒提到的大概都是老版本了:
//定義一維數(shù)組
function MArray(len){
this.length = len;
for(i=1;i<=len;i++) this[i] = 0;
return this;
}
//創(chuàng)建數(shù)組
var strarray = new MArray(9)
//訪問數(shù)組
for(aint in strarray) document.write(aint + ":" + strarray[aint] + "<br>");
//定義二維數(shù)組
function creatMArray(row,col){
var indx=0;
this.length=(row*10)+col
for(var x=1;x<=row;x++)
for(var y=1;y<=col;y++){
indx=(x*10)+y;
this[indx]="";
}
return this;
}
//創(chuàng)建二維數(shù)組
var xarr = new creatMArray(11,2)
//訪問二維數(shù)組
for (x in xarr) document.write(x + ":" + xarr[x] + "<br>")