JavaScript数组概念及相关练习
Posted 开到荼蘼223's
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)
以上是关于JavaScript数组概念及相关练习的主要内容,如果未能解决你的问题,请参考以下文章