【Javascript数组-相关知识总结】

本文详细介绍了数组的创建、访问元素、遍历以及相关小练习,包括查找最大值、筛选条件元素、删除特定值和反转数组。接着讲解了二维数组的创建、访问和相关练习,如求和、对角线元素之和等。此外,还涉及到了数组的插入、输出杨辉三角形、阶乘求和以及数组转置等实际操作。
摘要由CSDN通过智能技术生成

一、数组

数组:是内存中一块连续的存储单元

1、创建数组

创建数组的两种常见方式的用法:

  • 使用‘new Array()”创建数组。
  • 使用“[]”字面量来创建数组。
  <script>
  //使用new Array()创建数组
   var arr1 = new Array();
 //使用字面量来创建数组
   var arr1 = [];
  </script>
    

2、访问数据元素

使用索引来访问数组中的元素,索引是一个数字, 从0开始。

在这里插入图片描述
⭐️示例代码:

    <script>
         var arr= ['苹果','橘子','香蕉','桃子']
         console.log(arr[0]);
        //输出结果:苹果
         console.log(arr[1]);
        //输出结果:橘子
        console.log(arr[2]);
        //输出结果:香蕉
        console.log(arr[3]);
        //输出结果:桃子
        console.log(arr[4]);
    </script>

⭐️输出结果:
在这里插入图片描述

3、数组遍历

  • 数组遍历是将数组中的元素全部访问一遍,可以利用for循环来实现,在for循环中让索引从0开始自增。
  • 如果数组元素比较多时,计算数组元素的个数不太方便,这时候可以利用“数组名.length”来快速地获取数组长度。

⭐️示例代码:

    <script>
        var arr=new Array(5)//表示定义一个具有5个存储单元的数组
        arr[0]='red'
        arr[1]=123
        arr[2]='ccc'
        arr[3]='ddd'
        arr[4]='eee'
        for(var i=0;i<arr.length;i++){
            console.log(arr[i])
        } 
    </script>

⭐️输出结果为:
在这里插入图片描述

4、数组相关小练习

😄示例1:找出数组中的最大值。
①代码段如下:

    <script>
    // 找数组中的最大值
    var num=[45,78,32,11,56,99,27]
        var max=num[0]//假定数组第一个值是最大值
        for(let i=0;i<num.length;i++){
            if(max<num[i]){
                max=num[i]
            }
        }
        console.log('max=',max)
    </script>

②输出结果:
在这里插入图片描述
😄示例2:找出数组中大于等于10的元素,存放到新数组中。
①代码段如下:

    <script>
   //找出数组中大于等于10的元素,存放到新数组中
    var s=[0,1,5,0,12,78,34,6,7]
    var arr1=[]//空数组
    var j=0//是arr1数组的索引
    for(var i=0;i<s.length;i++){
    if(s[i]>=10){
        arr1[j]=s[i]
        j++
    }
   }
     console.log(arr1)
    </script>

②输出结果:
在这里插入图片描述
😄示例3:找一组数据,删除数组中等于0的元素
①代码段如下(有两种方法,方法二的空间复杂度低于方法一,更加高效):

   <script>
//1.找一组数据,删除数组中等于0的元素
var arr=[0,1,5,0,12,78,34,6,7]
var newArr=[]
for(var i=0;i<arr.length;i++){
    if(arr[i]!=0){
        newArr[newArr.length]=arr[i]
    }
}
console.log(newArr)
//2.在原数组上操作,直接删除0
var arr=[0,1,5,0,12,78,34,6,7]
for(var i=0;i<arr.length;i++){
    if(arr[i]==0){
     for(var j=i;j<arr.length;j++)
    {
        arr[j]=arr[j+1]
    }
  }
}
console.log(arr)
    </script>

②输出结果:
在这里插入图片描述
😄示例4:反转数组元素
①代码段如下(有两种方法,方法二的空间复杂度低于方法一,更加高效):

 <script>
        // 1.创建一个新数组,使其原数组元素进行反转
        var arr=['red' ,'green','pink','black','yellow']
        var newArr=[]
        var j=0
        for (var i=arr.length-1;i>=0;i--){
            newArr[j]=arr[i]
            j++
        }
        console.log(newArr)
        // 2.在原数组上将原数组元素进行反转
        var arr=['red','green','pink','black','yellow']
        var i=0;//第一个元素的下标
        var j=arr.length;//最后一个元素的下标
        while(i<j){
            var temp=arr[i]
            arr[i]=arr[j]
            arr[j]=temp
            i++
            j--
        }
        console.log(arr)
    </script>

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

二、二维数组

二维数组:通过两个下标(索引)来确定一个元素。

1、创建方式

(1)使用new Array()创建

⭐️①代码段:

   // 第一种创建方法
        var info=new Array(
            new Array('刘备','男',32),//第一行,逗号不能忘
            new Array('关羽','男',28),//第二行,逗号不能忘
            new Array('张飞','男',27)//第三行
        )
        console.log(info)

⭐️②输出结果:
在这里插入图片描述

(2)通过’[ ]'创建

⭐️①代码段:

// 第二种创建方法
var info=[
    ['刘备','男',32],
    ['关羽','男',28],
    ['张飞','男',27]
]
console.log(info)

⭐️②输出结果
在这里插入图片描述
以上两种创建方式都可以,然后加上下面这条代码段,可以排列称为三行三列的二维数组。
①代码段:

var str=''
for(var i=0;i<info.length;i++){//外循环:代表二位数组的行下标,info.length表示行数
    for(var j=0;j<info[i].length;j++){//内循环:表示数组列下标,info[i].length表示i行的元素
            str += info[i][j]+'\t'
    }
    str += '\n'//打印二维数组时,在每行的末尾添加换行符
}
console.log(str)

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

2、访问二维数组元素

数组名[下标1][下标2] ------默认:按行优先,'下标1’是行下标,'下标2’是列下标。

3、二维数组小练习

😄 (1)求3*4的二维数组的每行元素之和
⭐️①代码段如下:

       var arr=[
            [15,25,4,59],
            [11,33,41,26],
            [22,87,5,17]
        ]
        console.log(arr)
        for(var i=0;i<arr.length;i++){
             var sum=0//这是为了防止全部元素相加,每次内循环一次,sum清零,这样就是每行元素之和
            for(var j=0;j<arr[i].length;j++){
                sum += arr[i][j]
            }
            console.log('第'+(i+1)+'行元素之和=',sum)
        }

⭐️②输出结果为:
在这里插入图片描述

😄 (2)求3*4的二维数组的每列元素之和
⭐️①代码段如下:

 var arr=[
            [15,25,4,59],
            [11,33,41,26],
            [22,87,5,17]
        ]
        console.log(arr)
        for(var i=0;i<arr[0].length;i++){//外循环;表示列下标,
            //这里的arr[0].length是用来计算行的列数,因为每行的列数都一样,所以常量可以赋值为0,1,2
             var sum=0
            for(var j=0;j<arr[0].length-1;j++){//内循环;表示行下标,arr[0].length-1是用来计算行的行数
                sum += arr[j][i]
                
            }
            console.log('第'+(i+1)+'列元素之和=',sum)
        }

⭐️②输出结果为:
在这里插入图片描述
😄 (3)求3*3的二维数组的对角线元素之和
⭐️①代码段如下:

var a=[
    [2,3,4],
    [4,5,6],
    [7,8,9]
]
var sum1=0
var sum2=0
for(var i=0;i<a.length;i++){
    sum1+=a[i][i]
    sum2+=a[i][a.length-i-1]
}

console.log('正对角线和为',sum1)
console.log('反对角线和为',sum2)

⭐️②输出结果为:
在这里插入图片描述

😄 (4)输入一个数,将数插入到数组里,是数组还是有序的
⭐️①代码段如下:

    <script>
        var arr=[12,23,26,45,58,60,null]
        var num=parseInt(prompt('请输入要插入的数:'))
        var index=0
        // 1.遍历数组,寻找插入的位置
        for(var i=0;i<arr.length;i++){
            if(arr[i]>num){
                index=i;
                break
            }
        }
        //2.将插入位置以后的元素依次向后移动
        for(var j=arr.length-1;j>index;j--){
            arr[j]=arr[j-1]
        }
        //3.将元素放入相应的位置
        arr[index]=num
        console.log(arr)
    </script>

⭐️②输出结果为:
在这里插入图片描述在这里插入图片描述

😄 (5)输出杨辉三角形
⭐️①代码段如下:

var info=new Array(7)//创建数组,有七个单元,也就是七行
for(var i=0;i<info.length;i++){
  info[i]=new Array(7)//每行又创建有七个单元,也就是七列
}
//1.对二维数组进行初始化;第一列和对角线全部置为1
for(var j=0;j<info.length;j++){
  info[j][j]=1;//对角线元素为1
  info[j][0]=1;//第一列元素为1
}
//2.对二维数组正对角线左边的元素进行运算。
for(var i=2;i<info.length;i++){//外循环,行下标
  for(var j=1;j<i;j++){//列下标
    info[i][j]=info[i-1][j-1]+info[i-1][j]
  }

}
//3.输出二维数组
var str=''
for(var i=0;i<info.length;i++){
  for(var j=0;j<=i;j++){
    str+=info[i][j]+'\t'
  }
  str+='\n'
}
console.log(str)

⭐️②输出结果为:
在这里插入图片描述

😄 (6)求1!+2!+…+10!=?
⭐️①代码段如下:

var sum=0;//求和
for(var i=1;i<=10;i++){
    var s=1//求当前i的阶乘
    for(var j=1;j<=i;j++){
        s=s*j
    }
    sum+=s//阶乘的和
}
console.log('sum=',sum)

⭐️②输出结果为:
在这里插入图片描述
😄 (7)二维数组的转置
⭐️①代码段如下:

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++){//外循环:变量i是arr数组的列下标,也是res数组的行下标
     res[i]=[]
     for(var j=0;j<arr.length;j++){//内循环:变量j是arr数组的行下标,也是res数组的列下标
         res[i][j]=arr[j][i]
     }
 }
 console.log(res)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++){//外循环:变量i是arr数组的列下标,也是res数组的行下标
     res[i]=[]
     for(var j=0;j<arr.length;j++){//内循环:变量j是arr数组的行下标,也是res数组的列下标
         res[i][j]=arr[j][i]
     }
 }
 console.log(res)

⭐️②输出结果为:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值