JavaScript之数组
Posted 别Null.了
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript之数组相关的知识,希望对你有一定的参考价值。
javascript之数组
目录
练习二 定义一个3*3的二维数组,存放数值型数据,输出每行、每列、对角线元素之和
一、介绍数组
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之数组的主要内容,如果未能解决你的问题,请参考以下文章