JavaScript数组概念及相关练习

数组

在这里插入图片描述

数组:是一些类型相同的数据的集合,它和普通的对象功能类似,也是用来存储一些值,数组是使用数字来作为索引操作内部的元素。
索引:从0开始的整数就是索引。

创建数组

1.使用new Array()创建数组

            var arr = new Array();//定义一个空数组
            arr[0] = 10;//向数组中添加元素
            arr[1] = 33;
            arr[2] = 22;
            arr[3] = 44;
            console.log(arr);

在这里插入图片描述
使用构造函数创建数组时,也可以同时添加元素,将要添加的元素作为构造函数的参数传递

        var arr2 = new Array(10,20,30);
        console.log(arr2);

在这里插入图片描述

2.使用字面量来创建数组

 var arr=[]//创建一个空数组

注意:数组中的元素可以是任意的数据类型,但是平时使用数组时为了方便管理建议一个数组中存放相同数据类型的值。

arr = ['hello',1,true,null,undefined,function(){alert(1)},];

获取数组的长度:可以使用length获取数组的长度
语法 : 数组.length
对于连续的数组,使用length可以获取到数组得到长度
对于非连续的数组,使用length可以获取到数组的最大索引+1

数组的访问和遍历

数组的访问是通过索引(下标)来访问

可以通过一个for循环来访问数组中的所有元素,这个也称为数组的遍历

        var arr = new Array(4)
        arr[0] = '苹果'
        arr[1] = '橘子'
        arr[2] = '香蕉'
        arr[3] = '菠萝'
        for(var i=0;i<arr.length;i++){
            console.log(arr[i])
        }

在这里插入图片描述

数组练习

求数组中的最大值、最小值

        // 定义一个具有5个单元的一维数组,找出数组的最大值
        var arr = [51,89,56,34,92]
        var max = arr[0]
        var min = arr[0]
        for(var i=0;i<arr.length;i++){
            if(max<arr[i]){
                max = arr[i];
            }
            if(min>arr[i]){
                min = arr[i];
            }
        }
        console.log(max) //92
        console.log(min) //34

将数组元素倒置

借助中间临时数组

		var arr = [13,48,2,95,67,40];
        var newArr = [];//借助中间临时数组
        for(var i=arr.length-1;i>=0;i--){
            newArr[newArr.length] = arr[i]
        }
        console.log(newArr)

通过下标数组

		var arr = [13,48,2,95,67,40];
        for(var i=0;i<arr.length/2;i++){
            var temp = arr[i];
            arr[i] = arr[arr.length-1-i];
            arr[arr.length-1-i] = temp;
        }
        console.log(arr)

利用while循环倒置数组

		var arr = [13,48,2,95,67,40];
        var i=0;
        var j=arr.length-1;
        while(i<j){
            var temp = arr[i];
            arr[i] = arr[j]
            arr[j] = temp
            i++
            j--
        }
        console.log(arr)

二维数组

二维数组是通过两个下标(行下标,列下标)来确定一个数组元素。

创建二位数组

定义方式:
1.数组名 = new Array( new Array( ),new Array( ) )
2.数组名 = [ [ ] , [ ] ]

二维数组的访问

元素的访问方式 数组名[下标1][下标2]
若下标1为行下标 下标2为列下标 则是按行优先访问
若下标1为列下标 下标2为行下标 则是按列优先访问

打印二维数组

        var arr = [[12,34,21],[23,89,58],[29,87,117]];        
        var str = '';
        for(var i=0;i<arr.length;i++){
            // 外循环 控制行下标
            for(var j=0;j<arr[i].length;j++){
                //内循环 控制列下标
                str = str+arr[i][j]+"\t";
            }
            str = str+"\n";
        }
        console.log(str)

输出结果如下:
在这里插入图片描述

找出二维数组中每行最大的元素

        var arr = [
            [45,78,32,10],
            [12,0,61,39],
            [5,-11,36,55]
        ];
        var str = '';
        for(var i=0;i<arr.length;i++){
            for(var j=0;j<arr[i].length;j++){
                str += arr[i][j]+'\t';
            }
            str += '\n';
        }
        console.log(str);//打印二维数组
        
        for(var m=0;m<arr.length;m++){
            max = arr[m][0];// 假定每一行第一个元素为最大值
            for(var n=m+1;n<arr[m].length;n++){
                if(max<arr[m][n]){
                    max =arr[m][n];
                }
            }
            console.log("第"+(m+1)+"行最大值是"+max)
        }

在这里插入图片描述

定义一个3*3的二维数组,存放的数值型数据,输出每行,每列,对角线元素之和

        var arr = [
            [11,22,33],
            [44,55,66],
            [77,88,99]
        ];
        var str = '';
        for(var i=0;i<arr.length;i++){
            for(var j=0;j<arr[i].length;j++){
                str += arr[i][j]+'\t';
            }
            str += '\n';
        }
        console.log(str);//打印二维数组
        var s1=0;//初始化正对角线和
        var s2=0;//初始化反对角线和
        for(var m=0;m<arr.length;m++){
            var row_sum = 0;
            var col_sum = 0;
            s1 += arr[m][m];
            s2 += arr[m][arr.length-1-m]
            for(var n=0;n<arr[m].length;n++){
                row_sum += arr[m][n]; //每行元素之和
                col_sum += arr[n][m]; //每列元素之和
            }
            console.log('第'+(m+1)+'行元素之和'+row_sum);
            console.log('第'+(m+1)+'列元素之和'+col_sum);
        }
        console.log("正对角线元素之和"+s1);
        console.log("反对角线元素之和"+s2);

在这里插入图片描述

二维数组的转置

        var arr = [
            ['a','b','c'],
            ['d','e','f'],
            ['g','h','i'],
            ['j','k','l']
        ];
        var res = [];
        for(var i=0;i<arr[0].length;i++){
            res[i] = [];
            for(var j=0;j<arr.length;j++){
                res[i][j] = arr[j][i];
            }
        }
        console.log(res)

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值