1、一维数组:数组元素只有一个下标(通过一个下标就可以定位数组中的元素)
2、二维数组:数组中的每个元素都有两个下标(由行和列组成的数组)
(1)定义:
a、通过字面量:[ ]
var arr = [[1,2,3], [4,5,6], [7,8,9]]
b、使用Array对象
var arr = new Array( new Array(1,2,3), new Array(4,5,6), new Array(7,8,9) )
(2)二维数组元素的访问:数组名 下标1 默认情况下'下标1'代表行下标,'下标2'代表列下标
(3)输出:采用循环嵌套
var str = '' for(let i=0;i<arr.length;i++){ //外循环:控制数组的行数。arr.length表示arr数组的行数.i表示行下标 for(let j=0;j<arr[i].length;j++){//内循环:控制数组的列。arr[i].length表示i行的元素个数。j表示列下标 str += arr[i][j] + '\t' } str += '\n' } console.log(str)
练习1:定义一个二维数组,输出该二维数组的最大值
var arr = new Array(new Array(56,35,42), new Array(89,65,77), new Array(123,78,99) ) let max = arr[0][0] //假设二维数组的第一个元素是最大值 for(let i=0;i<arr.length;i++){ for(let j=0;j<arr[i].length;j++){ if(max < arr[i][j]){ max = arr[i][j] } } } console.log("Max=",max)
练习2:定义一个二维数组,输出该二维数组的每行元素的最大值
var arr = [[78,56,89],[456,72,66],[123,852,476]] var str = '' for(let i=0;i<arr.length;i++){ //外循环:控制数组的行数。arr.length表示arr数组的行数.i表示行下标 for(let j=0;j<arr[i].length;j++){//内循环:控制数组的列。arr[i].length表示i行的元素个数。j表示列下标 str += arr[i][j] + '\t' } str += '\n' } console.log(str) //需求:输出每行元素的最大值 for(let i=0;i<arr.length;i++){ let max = arr[i][0] //假定每行的第一个元素为最大值 for(let j=1;j<arr[i].length;j++){ if(max < arr[i][j]){ max = arr[i][j] } } console.log('第'+(i+1)+'行的最大值是:',max) }
练习3:定义一个3*3二维数组,输出该数组每行元素之和、对角线元素之和
var arr = [[1,2,3],[4,5,6],[7,8,9]] //需求1:求二维数组每行元素之和 for(let i=0;i<arr.length;i++){ let sum = 0 for(let j=0;j<arr[i].length;j++){ sum += arr[i][j] } console.log('第'+(i+1)+'行的元素之和是:',sum) } //需求2:求对角线元素之和 let s1 = 0 //左上-右下对角线 let s2 = 0 //左下-右上对角线 for(let i=0;i<arr.length;i++){ s1 += arr[i][i] s2 += arr[i][arr.length - i - 1] } console.log('左上-右下对角线元素之和:',s1) console.log('左下-右上对角线元素之和:',s2)
练习4、计算斐波拉契数列的前20项之和
1 1 2 3 5 8 13 21 34......
var f1 = 1, f2 = 1 var sum = f1+f2 for(let i=3;i<=20;i++){ let fn = f1+f2 f1 = f2 f2 = fn sum += fn } console.log("sum=",sum)