七、数组
(一)数组导读
(二)数组及其创建方式
数组可以将相关的数据一起存放,并提供方便的访问。
创建数组的方法:
-
利用new关键字创建数组
var arr=new Array();
-
利用数组字面量创建数组
-
创建空数组
var arr=[];
-
创建带初始值的数组,可以任意数据类型共存
var arr=['小白','大黑','大黄']; var arr1=[1,2,'liu',true]; //可以同时存放多种数据类型的数据
-
(三)访问数组元素
如果直接输出:
var arr=['小白','大黑','大黄']; console.log(arr);
会返回所有元素.
索引(下标):用来访问数组元素的序号(数组下标从零开始)
console.log(arr[2]);
如果输出了没有的元素,会输出undefined
(四)遍历数组
一口气将所有元素取出来.
获取数组长度:arr.length,动态监测数组元素个数.
var arr=['小白','大黑','大黄']; for(var i=0;i<arr.length;i++){ console.log(arr[i]); }
案例1:求数组[2,6,1,7,4]里面所有元素的和及平均值:
var nums = [2,6,1,7,4]; var sum=0; for(var i=0;i<nums.length;i++){ sum+=nums[i]; } var average=sum/nums.length; console.log(sum,average);
想要输出多个变量,用逗号分隔即可.
案例2:求数组[2,6,1,77,52,25,7]中的最大值
var nums=[2,6,1,77,52,25,7]; var max=nums[0]; for(var i=0;i<nums.length;i++){ max=max<nums[i] ? max : nums[i]; } console.log(max);
(五)数组新增元素
可以通过修改length长度以及索引号增加数组元素
-
修改length长度:
var arr=['red','green','blue']; arr.length=5; //这时有两个空元素,为unfined
-
通过修改数组索引号,追加数组元素(直接追加)
var arr=['red','green','blue']; arr[3]='pink';
注意:不要直接给数组名赋值,不然之前的数组就没了!!!
案例:筛选数组.要求将数组[2,0,6,1,77,0,52,0,25,7]中大于10的元素筛选出来,放入新数组
var arr=[2,0,6,1,77,0,52,0,25,7]; var nums=[]; //声明一个空数组 var count=0; for(var i=0;i<arr.length;i++){ if(arr[i]>10){ nums[count]=arr[i]; count++; } } console.log(nums);
这个要用到新变量,会有些麻烦,有一个更妙的解决方法:
length可以自动检测元素的变化
var arr=[2,0,6,1,77,0,52,0,25,7]; var nums=[]; for(var i=0;i<arr.length;i++){ if(arr[i]>10){ nums[nums.length]=arr[i];//length可以自动检测元素的变化 } } console.log(nums);
妙啊!!!
(六)数组练习
-
删除指定的数组元素:
要求将[2,0,6,1,77,0,52,0,25,7]中的0去掉后,形成一个不包含0的新数组
var arr=[2,0,6,1,77,0,52,0,25,7]; var nums=[]; for(var i=0;i<arr.length;i++){ if(arr[i]!=0) nums[nums.length]=arr[i]; } console.log(nums);
-
翻转数组:
要求将数组:['red','green','blue','pink','purple']的内容反过来存放
var arr=['red','green','blue','pink','purple']; var newArr=[]; for(var i=0;i<arr.length;i++){ newArr[newArr.length]=arr[arr.length-i-1]; } console.log(newArr);
(七)冒泡排序
交换两个变量的值:(a和b),需要中间变量x
x=a; a=b; b=x;
冒泡排序:是一种算法,将一系列数据从小到大或从大到小排序.每次两两比较,将最大的放到数组最后.冒泡排序名字的来历时由于越小的元素会经交换,慢慢浮到数组上面.
-
一共需要交换的趟数,用外层for循环.
五个数据需要交换4趟
-
每一趟的交换次数,用内层for循环.
第一趟交换4次,第二趟交换2次...
将[5,4,3,2,1]从小到大排序:
var arr=[5,4,3,2,1]; var n=0; for(var i=0;i<arr.length;i++){ for(var j=0;j<=arr.length-i;j++){ if(arr[j]>arr[j+1]){ n=arr[j]; arr[j]=arr[j+1]; arr[j+1]=n; } } } console.log(arr);