JavaScript数组、二维数组及相关练习

文章目录

  • 数组
    • 创建数组
    • 数组元素的访问
    • 数组元素的练习
      • 输出下列数组的最大值、最小值
      • 数组中去掉所有的0元素
      • 数组元素的倒置
  • 二维数组
    • 创建二维数组
    • 二维数组的访问
    • 二维数组的练习
      • 找出二维数组每一行的最大值
      • 输出二维数组每行、每列、对角线元素之和
      • 二维数组的转置
      • 让二维数组的每行元素都是 降序 排列

数组

数组是一组类型相同的数据的集合,其中的每个数据被称作元素,在数组中可以存放任意类型的元素。

创建数组

1、使用new创建数组

 var 数组名=new Array()

2、使用字面量创建数组

 var 数组名=[ ]

数组元素的访问

  • 数组的索引从0开始到length-1
  • 数组创建后,都有属性length代表数组的长度(元素个数)
  • 通过循环访问数组元素
var arr =new Array(4)
arr[0]='a'
arr[1]='b'
arr[2]='c'
arr[3]='d'
for(i=0;i<arr.length;i++){
     
    console.log(arr[i])
}

数组元素的练习

输出下列数组的最大值、最小值

//输出下列数组的最大值、最小值
var num=[51,89,56,34,92]
var max=num[0]
var min=num[0]
for(var i=1;i<num.length;i++) {
     
    if(max<num[i]){
     
        max=num[i]
    }
    if (min>num[i]) {
     
        min=num[i]
    }
}
console.log(max)
console.log(min)

数组中去掉所有的0元素

//数组中除去0
var arr=[2,0,6,1,77,52,9,35,0]
var newArr=[]
for(var i=0;i<arr.length;i++){
     
    if (arr[i]!=0) {
     
        newArr[newArr.length]=arr[i]
    }
}
console.log(arr)
console.log(newArr)

数组元素的倒置

//1、利用一个数组倒置
var arr=[23,8,12,45,89,90]
for(var i=0;i<arr.length/2;i++){
     
    var t=arr[i]
    arr[i]=arr[arr.length-i-1]
    arr[arr.length-i-1]=t
}
console.log(arr)
//2、利用两个数组倒置
var arr=[23,8,12,45,89,90]
var newArr=[]
for(var i=arr.length-1;i>=0;i--){
     
    newArr[newArr.length]=arr[i]
}
console.log(newArr)
//3、利用while循环倒置
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、数组名=[ [ ] , [ ] ]

二维数组的访问

数组名 [行下标] [列下标]。默认按行优先

//二维数组的打印(字符串输出)
var arr=new Array(
    new Array(23,55),
    new Array(45,65),
    new Array(55,67,89)
)
console.log(arr)
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 arr=[
    [44,33,55,22,88],
    [56,53,89,67],
    [32,66,88]
]
for(var m=0;m<arr.length;m++){
     
    var max=arr[m][0] //假定每一行第一个元素为最大值
    for(var n=1;n<arr[m].length;n++){
     
        if (max<arr[m][n]) {
     
            max=arr[m][n]
        }
    }
    console.log("第"+(m+1)+"行的最大值是:"+max)
}

输出二维数组每行、每列、对角线元素之和

// 定义一个i*j的二维数组,存放数值型数据,输出每行、每列、对角线元素之和
var arr=[
    [1,2,3],
    [4,5,6],
    [7,8,9]
]
var sum3=0
var sum4=0
for(var i=0;i<arr.length;i++){
     
    var sum1=0
    var sum2=0
    for(var j=0;j<arr[i].length;j++){
     
        sum1+=arr[i][j]
        sum2+=arr[j][i]
        if (i==j) {
     
            sum3+=arr[i][j]
        }
        if (i+j+1==arr.length) {
     
            sum4+=arr[i][j]
        }
    }
    //也可用sum4+=arr[i][arr.length-1-i]
    console.log("第"+(i+1)+"行和是"+sum1)
    console.log("第"+(i+1)+"列和是"+sum2)
}
console.log("左上对角线元素和"+sum3)
console.log("右上对角线元素和"+sum4)

二维数组的转置

var arr=[
    [1,2,3],
    [3,4,5],
    [5,6,7],
    [7,8,9]
]
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]
    }
}
var str=""
for(var i=0;i<res.length;i++){
     
    for(var j=0;j<res[i].length;j++){
     
        str+=res[i][j]+"\t"
    }
    str+="\n"
}
console.log(str)

让二维数组的每行元素都是 降序 排列

// 让二维数组的每行元素都是 降序 排列
var arr=[
    [1,2,3],
    [4,5,6],
    [7,8,9]
]
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)

你可能感兴趣的:(JavaScript,javascript,js,数据结构,前端)