栈和队列:
js中没有专门的栈和队列类型,都是用普通该数组模拟的。
何时:只要希望按照顺序使用数组元素时
栈:一端封闭,只能从另一端进出的数组
顺序: FILO
何时:如果希望始终操作最后进入数组的最新的元素时。
如何:
结尾出入栈:
入: arr.push(值);
出: var last=arr.pop();
优:每次出入栈不影响其余元素的位置
开头出入栈:
入: arr.unshift(值);
出: var first=arr.shift();
缺:每次出入栈都会影响每个元素的位置
队列:只能从一端进入,从另一端出
顺序: FIFO
何时:只要按照先来后到的顺序使用元素
如何:
从结尾入队列: arr.push(值)
从开头出队列: var first=arr.shift()
1.二维数组:
什么是:数组中的元素,又引用了另一个子数组。
何时:
1.存储横行竖列的二维数据
2.对一个大的数组中的元素,进一步分类
如何:
创建:
1.先创建空数组,再添加子数组:
var arr=[];
arr[0]=[2,2,4,0];
arr[1]=[0,2,2,0];
2.在创建数组同时,初始化子数组
var arr=[
[2,2,4,0],//0
[0,2,2,0],//1
...
];
访问元素:
arr[r][c]:访问arr中r位置的子数组中的c位置的元素
越界: r不能越界
遍历:外层循环控制行,内层循环控制列
for(var r=0;r
for(var c=0;c
arr[r][c]//当前元素
}
}
练习:1.输入一串成绩,求总分 最高分,最低分
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);
练习:
去除数组中的重复项
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];声明一个数组比较
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);
练习:
求数组中的最大值
var arr=[1,2,3,4,5];
遍历数组,同时声明变量sum并赋值为arr中的任何一个值
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);