今天,记录一下JS的二位数组,并附上例题。
一.二维数组的本质:数组中的元素又是数组。
其实,我们都见过这样的二维数组,只不过没在意罢了,例如:
var arr = [[1,2,4,6],[2,4,7,8],[8,9,10,11],[9,12,13,15]] //这就是一个二位数组
arr[2][3]; // 11 注意:表示第三列第4行所在的元素。角标从0开始
二.下面介绍二维数组的初始化
记住了二维数组的本质,初始化也难不倒我们了。看一下实例
实例一:
var arr = [[1,2],['a','b']]; console.log(arr[1][0]); //a 第2列第1行所在的元素
实例二:
var arr = new Array(new Array(1,2),new Array("a","b")); console.log(arr[1][0]);
实例三:二维数组的声明:
var arr = new Array(); //先声明一维 for(var i=0;i<5;i++){ //一维长度为5 arr[i]=new Array(i); //在声明二维 for(var j=0;j<5;j++){ //二维长度为5 arr[i][j]=i; } }
然后,遍历二维数组arr
for(var i=0;i<arr.length;i++){
for(var j=0;j<arr[i].length;j++){
document.write(arr[i][j]);
}
document.write("<br/>");
}
结果:
注意:我们写入换行是写入的标签,因为document.write()是写入到HTML文档。所以写入换行不能用" "。
三、 例题:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的二维数组和一个整数,判断数组中是否含有该整数
var arr = [[1,2,4,6],[2,4,7,8],[8,9,10,11],[9,12,13,15]]; //规律:首先选取数组中右上角的数字,如果该数字=要查找的数字,查找过程结束;如果该数字>要查找的数字,剔除这个数字所在的列; //如果该数字<要查找的数字,剔除这个数字所在的行。 function find(arr,num){ if(num==null || num==''){ console.log(num+" is null"); return; } while(arr.length){ var temp = arr[arr.length-1][0]; if(num == temp){ console.log(num+"is finded"); return temp; }else if(temp>num){ arr.pop(); if(arr.length == 1){ console.log(num + " is not exists,"+num+" is less the minValue"); return; } }else{ for(var i=0;i<arr.length;i++){ if(arr[i].length ==1){ console.log(num + " is not exists,"+num+" is more than the maxValue"); return; } arr[i].shift(); } } } } var result = find(arr,18); console.log(result);