目录
一、初识数组
1、创建数组
2、访问数组元素
3、数组的遍历
4、举例
(1.)获取数组元素中的最大值
(2.) 数组转为字符串
?5、数组元素的操作
二、数组排序算法
1、冒泡排序算法
2、插入排序算法
??
?三、二维数组
1、创建二维数组
2、元素的访问
3、二维数组求和
4、二维数组的转置
?
一、初识数组
类型相同的数据的集合。
1、创建数组
(1.)使用'[]'字面量创建
var 变量名 = [1,2,3,4];
(2.)使用'new Array()'创建
var 变量名 = new Array();
var arr1 = []; //创建一个空数组
var arr2 = [1,2,3,4,5]; //创建一个有数据的数组
(3.)数组的属性
length(数组默认属性,表示数组的长度)
2、访问数组元素
使用索引来访问数组中的元素,索引是一个数字,从0开始。
数组名[index]? ? ? index的取值在0~lenth-1之间
var arr = [1,2,3,4,5,6,7,8]
console.log(arr[0]); //访问数组第一个元素
console.log(arr[8]); //访问元素超出数组长度
?
?
3、数组的遍历
将数组中的元素全部访问一遍。
(1.)数组名.length? ? ?---
var arr = [1,2,3,4,5,6,7,8]
console.log(arr.length);
?
(2.)for循环
var arr = [1,2,3,4,5,6,7,8]
//for循环遍历数组
for(i=0;i<arr.length;i++){
console.log(arr[i]);
}
?
4、举例
(1.)获取数组元素中的最大值
var arr = [2,43,561,646,1232,886,3,13]; //创建一个数组
var max = arr[0]; //用变量max保存数组中第一个值
for (i=1;i<arr.length;i++){//遍历数组
if(arr[i]>max){
max = arr[i] //把最大的数赋值给max
}
}
console.log('元素中的最大值是:',max);
?
(2.) 数组转为字符串
var arr = ['red', 'green', 'blue', 'pink'];
var str = arr[0];
var sep = '';
for(i=1;i<arr.length;i++){
str += seo + arr[i];
}
console.log(str);
?
?5、数组元素的操作
(1、)数组长度
A.获取数组长度
var arr = [1,2,3,4,5,6,7];
console.log(arr.length);
?
B.修改数组长度
var arr = [1,2,3,4,5,6,7];
arr.length = 9; //大于原数组长度
console.log(arr);
arr.length = 2; //小于原数组长度
console.log(arr);
C.访问空元素,返回结果为undefined。
var arr = [1,2,3,4,5,6,7];
console.log(arr[10]); //访问第十一个元素(空元素)
D.出现空元素的情况
//情况1:在使用字面量创建数组是出现空元素
var arr = [1,2,,4]
console.log(arr);
//情况2:在new Array()中传入数组长度的参数
var arr = new Array(4);
console.log(arr);
//情况3;给数组添加索引不连续的元素
var arr = [2];
arr[4] = 1; //向数组中添加一个元素,索引为4
console.log(arr);
(2、)新增或修改元素
给定的索引超过了数组中最大的索引为新增,否则为修改。
var arr = ['a','c','b','d','g']
arr[0] = 'A';
console.log(arr); //修改元素
arr[6] = 'D'
console.log(arr); //新增元素
?
(3、)筛选数组元素
eg:将一个数组中所有大于或等于10的元素筛选出来,放入到新的数组中。
var arr = [2,4,5,77,85,44,24,53,10];
var a = [];//定义一个新的数组
var j=0;
for(i=0;i<arr.length;i++){
if(arr[i]>=10){
a[j++] = arr[i];
}
}
console.log('原数组:',arr);
console.log('新数组:',a);
??
(4、)删除元素
eg:删除数组中所有数值为0的元素
var arr = [2,4,5,0,85,0,24,0,10];
var a = [];//定义一个新的数组
for(i=0;i<arr.length;i++){
if(arr[i]!=0){
a[a.length] = arr[i];
}
}
console.log('原数组:',arr);
console.log('新数组:',a);
?
(5、)数组反转
var arr = [2,4,5,0,85,24,10];
var a = [];
for(i=arr.length-1;i>=0;i--){
a[a.length] = arr[i];
}
console.log('反转后的数组',a);
?
二、数组排序算法
1、冒泡排序算法
eg:从小到大排序
var arr = [2,4,5,0,85,24,10]; //待排序的数组
console.log('交换前的数组',arr);
for( var i=0;i<arr.length;i++){ //控制比较的轮数
for( var j=0;j<arr.length-i-1;j++){ //控制参与比较的元素
if(arr[j]>arr[j+1]){ //相邻两个元素比较大小
var temp = arr [j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
console.log('交换后的数组',arr);
?
2、插入排序算法
var arr = [2,4,5,0,85,24,10]; //待排序的数组
console.log('交换前的数组',arr);
for(var i=1;i<arr.length;i++){
for(var j=i;j>0;j--){
if(arr[j-1]>arr[j]){
var temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
}
}
}
console.log('交换后的数组',arr);
?
?三、二维数组
1、创建二维数组
(1.)使用'[]'字面量创建
var arr = [[1,2,3],[4,5,6],[7,8,9]] //3行3列的二维数组
(2.)使用'new Array()'创建
? var a = new Array( ?? ??? ??? ?new Array(10,20,30), ?? ??? ??? ?new Array(11,22,33), ?? ??? ??? ?new Array(45,56,67) ?? ??? ?)
2、元素的访问
数组名[行下标][列下标]?? ?
var info = new Array(
new Array('Tom', 13, 155),
new Array('Lucy', 11, 152)
);
console.log(info[0]); // 输出结果:(3)?["Tom", 13, 155]
console.log(info[0][0]); // 输出结果:Tom
?
3、二维数组求和
var arr = [[1,2,3],[4,5,6],[7,8,9]]
var sum = 0;
for( var i=0;i<arr.length;i++){ //遍历arr数组
for(var j=0;j<arr[i].length;j++){ //遍历arr[i]数组
sum += arr[i][j]; //二维数组元素累加
}
console.log(sum);
}
?
?
4、二维数组的转置
二维数组的转置是将二维数组的横向元素保存为纵向元素
var a = [
['a','b','c'],
['d','e','f'],
['g','h','i'],
['i','k','I']
]
var str = ''
for(var i=0;i<a.length;i++){
for(var j=0;j<a[i].length;j++){
str += a[i][j]+'\t';
}
str += '\n';
}
console.log("转置前:\n",str);
var res = []
for(var i=0;i<a[0].length;i++){
res[i] = []
for(var j=0;j<a.length;j++){
res[i][j] = a[j][i];
}
}
console.log("转置后:",res);
?
?
|