JavaScript之数组

Posted 别Null.了

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript之数组相关的知识,希望对你有一定的参考价值。

javascript之数组

目录

JavaScript之数组

一、介绍数组

1、什么是数组

2、数组的分类

二、一维数组

1、一维数组的创建

2、一维数组元素的访问

3、JavaScript中一维数组的练习

练习一  找最大值最小值

三、二维数组

1、二维数组的创建

2、二维数组元素的访问

3、JavaScript中二维数组的练习

练习一:找出二维数组中每行元素的最大值并输出

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

四、数组的其他应用

1、清空数组的方法

2、转换字符串

3、重排序

reverse()方法

sort()方法


一、介绍数组

1、什么是数组

数组:一组类型相同的数据的集合。在内存中表现为一段连续的内存地址。创建数组最根本目的就是为了保存更多的数据。

2、数组的分类

一维数组

<script>
   var arr1 = [1,2,3,4,5,6]
</script>

二维数组

<script>
   var arr2 = [[1,2,3],[4,5,6]]
</script>

二、一维数组

1、一维数组的创建

方法一:通过构造函数 new Array()

数组名 = new Array()
//例如
var arr1 = new Array()      //创建空数组
var arr2 = new Array(10)    //使用构造函数创建数组时,若只传入一个数字,则该数字代表数组的长度,此处表示arr.length = 10
var arr3 = new Array("one", "two", "three")  //创建一个包含3个字符串值的数组

方法二:使用数组字面量创建 var arr = [ ]

var arr = []   //创建空数组
//例如
var arr = [1,2,3,4]  //数组元素间用逗号隔开,每次使用只传递一个数组项

2、一维数组元素的访问

(1)数组定义后都会有一个默认的属性length,length代表数组的单元个数。数组名.length表示数组的长度

(2)访问数组元素:数组名[索引]       索引又称为下标,从0开始一直到数组的长度减一。

创建了数组后,可以使用方括号(从0开始)的数字索引读取和设置数组的值(如arr[0])。访问数组时,如果索引值小于数组长度,则返回索引对应项的值。但如果索引值大于或等于数组长度,数组就会自动增加到该索引值加1的长度。

例如:如下代码输出结果为10,当我们所要访问的索引大于数组长度时,数组会自动增加到该索引值加1的长度。数组的长度变为10,但位置3至8实际都是不存在的,被访问时都将返回underfined。

//数组索引值大于或等于数组长度
var arr = ["张三", "李四", "王五"]
arr[9] = "小唐"
console.log(arr.length)  

3、JavaScript中一维数组的练习

练习一  找最大值最小值

定义一个整型数组,找出该数组中的最大值。

//定义一个整型数组,找出该数组中的最大值,最小值
var arr = [45,26,40,68,15,64]   //定义一个整型数组
var max = arr[0]         //初始使数组中第一个元素为最大值
var min = arr[0]         //使数组中第一个元素也为最小值
var average = arr[0]     //使数组中第一个元素为平均值
for(var i = 1;i < arr.length;i++)        //使用循环依次访问数组中每一个元素
{
    average=average+arr[i]        //每访问一个数组就将其加起来
    if(arr[i] > max)     //将数组中元素与最大值进行比较,若此元素大于最大值,则将此元素赋给max
    {
        max = arr[i]
    }else if(arr[i] < min){  //将数组中元素与最小值进行比较,若此元素小于最小值,则将此元素赋给min
        min = arr[i]
    }
}
average=average/(arr.length)   //算出数组中元素的平均值
 
console.log("max="+max)
console.log("min="+min)
console.log("average="+average)

输出结果为:max = 68

                     min = 15

                    average = 43

三、二维数组

1、二维数组的创建

  与一维数组创建方法类似

方法一:通过构造函数 new Array()

//数组名 = new Array(new Array(),new Array())
//例如
var arr = new Array(new Array(12,23,34),new Array(45,56,78))

输出结果为:0:(3) [12,23,34]

                     1:(3) [45,56,78]

方法二:使用数组字面量创建 var arr = [ ],[ ]

//数组名 = [[],[]]
//例如
var arr = [[11,22,33,44],[55,66,77]]

强调:定义行数不同的二维数组时,空出来的元素位置依然不存在数组

//例如
var arr = [[11,22,33,44],[55,66,77]]
console.log(arr)

//输出结果为:[11,22,33,44]
//          [55,66,77]
           

2、二维数组元素的访问

 数组名[下标1][下标2]
        
           若"下标1"为行下标,"下标2"为列下标,则是按行优先访问
        
           若"下标1"为列下标,"下标2"为行下标,则是按列优先访问

//定义二维数组
var arr = new Array(
    new Array(11,22,33),
    new Array(44,55,66),
    new Array(77,88,99)
)
//访问二维数组
var str = ''   //单引号或者双引号空时相当于变量的初始化,令数组为空
for(var i = 0;i < arr.length;i++)   //外循环控制行下标,arr.length表示这个数组的行数 
{
    for(var j = 0;j < arr[i].length;j++)   //内循环控制列下标,arr[i].length表示这一行有多少元素
    {
        str = str+arr[i][j]+"\\t"      //"\\t"表示元素间间隔四个空格
    }
    str = str + "\\n"     //"\\n"表示换行
}
console.log(str)

3、JavaScript中二维数组的练习

练习一:找出二维数组中每行元素的最大值并输出

//定义二维数组
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++)  //m控制数组的行
{
    var max = arr[m][0]     //假定每一行的第一个元素为最大值
    for(var n = 1;n < arr[m].length;n++)   //将每一行的元素与初始最大值进行比较,若大于则将其赋给max
    {
        if(max < arr[m][n])
        {
            max = arr[m][n];
        }
    }
    console.log("第"+(m+1)+"行的最大值是:"+max)   //一行比较结束后输出第m行的最大值
}

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

//定义一个数组
var arr = [
    [11,22,-33],
    [23,43,11],
    [54,34,14]
]
//访问数组
var str = ''
for(i = 0;i<arr.length;i++)
{
    for(j = 0;j<arr[i].length;j++)
    {
        str +=arr[i][j]+'\\t'
        
    }
    str = str +'\\n'
}
console.log(str)
//求每行元素之和
for(var m =0;m<arr.length;m++)  //m控制数组的行
{
    var sum1 =0
    for(var n = 0;n<arr[m].length;n++)  //从每一行第一个元素开始
    {
        sum1 = sum1 +arr[m][n]      //先走外循环,按行优先,m为行,n为列
    }
    console.log("第"+(m+1)+"行的和为:"+sum1)
}
//求每列元素之和
for(m =0;m<arr.length;m++)
{
    var sum2 =0    //放在循环里面使得每计算一行和之后都清零
    for(n = 0;n<arr[m].length;n++)
    {
        sum2 = sum2 +arr[n][m]     //先走内循环,按列优先,n为行,m为列
    }
    console.log("第"+(m+1)+"列的和为:"+sum2)
}
//求对角线元素之和
var s1 = 0
var s2 = 0
for(var i = 0;i<arr.length;i++)
{
    s1 = s1 + arr[i][i]   //正对角线元素的两个下标相同
    s2 = s2 + arr[i][arr.length-i-1]  //反对角线元素的两个下标之和为数组长度减1
}
console.log("正对角线元素和为:"+s1)
console.log("反对角线元素和为:"+s2)

四、数组的其他应用

1、清空数组的方法

(1)arr.length = 0;数组的length属性是可以直接赋值的。

(2)arr = [];直接把数组指向一个空数组。

2、转换字符串

  • toString()  把数组转化成字符串

toString()方法返回数组中每个值的字符串形式并拼接成以逗号隔开的字符串。

  • toLocaleString()

调用toLocaleString()也会返回一个数组值的以逗号分隔的字符串,与toString()方法的区别在于它调用的是数组每一项的toLocaleString()方法。

  • join()

把数组的每一项以特定的方式拼接。

//join()  将数组每一项以特定字符连接
var colors = ["one", "two", "three"];
alert(colors.join())      //one,two,three   默认以逗号连接
alert(colors.join("&"));     //one&two&three

3、重排序

数组中存在两个可以直接用来重排序的方法:reverse()sort()

reverse()方法

可以直接反转数组项的顺序,但也只有这一项功能。

//reverse()方法
var arr = [1,2,3,4,5];
arr.reverse()
console.log(arr);      //5,4,3,2,1

sort()方法

可以灵活地对数组排序,默认情况下是按升序排列数组项。sort()方法的原理是对数组每一项调用toString()转型方法,获得字符串后进行比较

var arr = [10,2,13,4,5];
arr.sort();
console.log(arr);    //10,13,2,4,5   10和13字符的第一位为1,因此在最前面

 

以上是关于JavaScript之数组的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript单行代码,也就是代码片段

JavaScript 片段

JavaScript 代码片段

10个JavaScript代码片段,使你更加容易前端开发。

10个JavaScript代码片段,使你更加容易前端开发。

48个值得掌握的JavaScript代码片段(上)