棧和隊(duì)列:
js中沒(méi)有專(zhuān)門(mén)的棧和隊(duì)列類(lèi)型琼富,都是用普通該數(shù)組模擬的。
何時(shí):只要希望按照順序使用數(shù)組元素時(shí)
棧:一端封閉谒麦,只能從另一端進(jìn)出的數(shù)組
順序: FILO
何時(shí):如果希望始終操作最后進(jìn)入數(shù)組的最新的元素時(shí)俄讹。
如何:
結(jié)尾出入棧:
入: arr.push(值);
出: var last=arr.pop();
優(yōu):每次出入棧不影響其余元素的位置
開(kāi)頭出入棧:
入: arr.unshift(值);
出: var first=arr.shift();
缺:每次出入棧都會(huì)影響每個(gè)元素的位置
隊(duì)列:只能從一端進(jìn)入哆致,從另一端出
順序: FIFO
何時(shí):只要按照先來(lái)后到的順序使用元素
如何:
從結(jié)尾入隊(duì)列: arr.push(值)
從開(kāi)頭出隊(duì)列: var first=arr.shift()
1.二維數(shù)組:
什么是:數(shù)組中的元素绕德,又引用了另一個(gè)子數(shù)組。
何時(shí):
1.存儲(chǔ)橫行豎列的二維數(shù)據(jù)
2.對(duì)一個(gè)大的數(shù)組中的元素摊阀,進(jìn)一步分類(lèi)
如何:
創(chuàng)建:
1.先創(chuàng)建空數(shù)組耻蛇,再添加子數(shù)組:
???????????????var arr=[];
???????????????arr[0]=[2,2,4,0];
???????????????arr[1]=[0,2,2,0];
2.在創(chuàng)建數(shù)組同時(shí)踪蹬,初始化子數(shù)組
???????????var arr=[
??????????????????[2,2,4,0],//0
??????????????????[0,2,2,0],//1
??????????????????...
?????????????????];
訪問(wèn)元素:
arr[r][c]:訪問(wèn)arr中r位置的子數(shù)組中的c位置的元素
越界: r不能越界
遍歷:外層循環(huán)控制行,內(nèi)層循環(huán)控制列
??????????????for(var r=0;r
?????????????????for(var c=0;c
arr[r][c]//當(dāng)前元素 ???
?????????????????}
??????????????}
練習(xí):1.輸入一串成績(jī)臣咖,求總分 最高分跃捣,最低分
????????var arr=[60,68,70,75,82,93,56];
????????for(var i=0,sum=0,height=arr[0];i
sum+=arr[i];//求總分
求最高分
??????????????if(arr[i]>height){
?????????????? height=arr[i];
?????????????}
求最低分
?????????????if(arr[i]
????????????? height=arr[i];
?????????????}
????????}
????????console.log(sum);
????????console.log(height);
例:
????????????var arr=[65,78,98,65];
????????????for(var i=0,a=0,b=65,c=78;i
????????????a=arr[i]+a;求和
????????????if(arr[i]>b){求最大值
????????????????b=arr[i];
????????????}
????????????if(arr[i]
????????????????c=arr[i];
????????????}
????????}
????????console.log(a);
????????console.log(b);
????????console.log(c);
練習(xí):
???????去除數(shù)組中的重復(fù)項(xiàng)
????????var arr=[1,2,3,4,5,2,3,4];
????????for(var i=0,uarr=[arr[0]];i
??????????for(var j=0;j
????????????if(arr[i]==uarr[j]){
????????????????break;
????????????}
??????????}
???????????if(j===uarr.length){
??????????????uarr[uarr.length]=arr[i];
????????????}
????????}
????????console.log(uarr);
例:
var arr=[1,3,4,2,3,5,1];
???????var arr2=[1];聲明一個(gè)數(shù)組比較
????????for(var i=0;i
????????????for(var j=0;j
????????????if(arr[i]==arr2[j]){
????????????????break;
????????????}
????????????}
????????????if(j==arr2.length){
????????????????????var arr2=arr2.concat(arr[i]);
????????????????}
????????}
????????console.log(arr2);
練習(xí):
求數(shù)組中的最大值
????????var arr=[1,2,3,4,5];
遍歷數(shù)組,同時(shí)聲明變量sum并賦值為arr中的任何一個(gè)值
????????for(var i=0,sum=2;i
????????????if(arr[i]>sum){
??????????????sum=arr[i];
????????????}
????????}
????????console.log(sum);
例:
????var arr=[1,2,3,4,5,6,7];
????????var num=4;
??????????for(var i=0;i
??????????console.log(arr[i]);
??????????if(arr[i]>num){
??????????num=arr[i];
?????????}
??????} ?
?????????????console.log(num);