二维数组
var arr=[[1,2,3],["a","b","c",["d","e","f"]],450];
alert(arr[1][3][1]);//多重嵌套
数组编历
遍历数组通俗点就是说把数组中的每个数都读一遍(部分有if条件+break的则可能不会完全遍历),你可以对于数组中的每个数进行处理,亦或者是找到数组中那个你需要的数。
1.普通编历
var arr=[1,2,3,4,5,6,7,8,9];
for(var i=0;i<arr.length;i++){
document.write(arr[i]+"<br>")
2.forEach遍历
var arr=[1,2,3,4,5,6,7,8,9];
var m="";
arr.forEach(foreach);
alert(m);
function foreach(n){
m=m+n;
}
3.filter
var arr=[1,2,3,4,5,6,7,8,9];
arr3=arr.filter(Arr);
function Arr(n){
return n>=5;
}
alert(arr3);
alert(arr);
filter不会对原数组产生变化,可以对数组的元素执行函数后,来创建新数组
4.reduce
var arr=[1,2,3,4,5,6,7,8,9];
sum =arr.reduce(Arr);
function Arr(m,n);{
return m+n;
}
alert(sum);
alert(arr);
查找指定数
var arr=[10,2,8,22,16,4,10,6,14,20,18];
var n=Number(prompt("请输入要查找的元素"));
//要求:返回要查找元素的下标(如果这个元素数组里没有怎么办)
var index=-1;//提前判断这数字是否存在
if(arr.indexOf(n)==index){
alert("改数字不存在")
}else{
alert("该数字的下标为"+arr.indexOf(n))//数字存在,所以输出下标
}
案例:优秀班级有三个班级,每个班级有十个人,输出各班的平均分和最优秀班级是哪个优秀班级:平均分最高每个班级分数自己写,(用二位数组)
//有三个班级,每个班级有10人,求他们平均分和平均分最高的班级
oneClass=[50,89,78,45,68,45,28,48,94,85];
twoClass=[15,49,65,48,78,64,84,43,95,49];
threeClass=[68,75,48,95,85,67,45,35,85,45];
//求平均分
function Arr(m,n){
return m+n;
}
oneClassAvg=oneClass.reduce(Arr)/10;
twoClassAvg=twoClass.reduce(Arr)/10;
threeClassAvg=threeClass.reduce(Arr)/10;
//alert(oneClassAvg);
//求最大值
var sumClassAvg=[];
sumClassAvg.unshift(oneClassAvg,twoClassAvg,threeClassAvg);
//alert(sumClassAvg);
var maxIndex=0;
for(var i=1;i<sumClassAvg.length;i++){
if(sumClassAvg[i]>sumClassAvg[maxIndex]){
maxIndex=i;
}
}
var maxClass="";
//找出最大值班级
if(maxIndex==0){
maxClass="一班"
}
if(maxIndex==1){
maxClass="二班"
}
if(maxIndex==2){
maxClass="三班"
}
alert("一班平均分为"+oneClassAvg+"\n"+"二班平均分为"+twoClassAvg+"\n"+"三班平均分为"+threeClassAvg+"\n"+maxClass+"是优秀班级,平均分为"+sumClassAvg[maxIndex]);