1. 数组是什么
数组是指一组数据的集合,其中的每个数据被称作元素,在数组中可以存放任意类型的元素。数组是一种将一组数据存储在单个变量名下的优雅方式。
2.创建数组
2.1 数组的创建方式
2.1.1 利用new创建数组
var 数组名 = new Array() ;
var arr = new Array(); //创建一个新的空数组
- 需要结合对象使用
2.1.2 利用数组字面量创建数
var arr = []; //创建了个空的数组
var arr1 = [1,2,3,'一二三',true];
- 数组的字面量是方括号;
- 声明数组并赋值称为数组的初始化 ;
- 数组里面的数据,比如‘1,2,3,‘一二三’’,我们称为数组元素;
3.获取数组元素
3.1 数组的索引
索引(下标):用来访问数组元素的序号(数组下标从0开始)
var arr = ['小白','小黑','大黄',‘瑞奇’];
索引号: 0 1 2 3
console.log (arr[2]); 获取数组中的第2个元素
- 数组可以通过索引来访问、设置、修改对应的数组元素,我们可以通过“数组名[索引]”的形式来获取数组中的元素;
- 如果想要获取数组中不存在的索引,输出的结果没有对应的数组元素,则是''undefined'';
4.遍历数组
4.1遍历是什么
- 遍历:就是把数组中的每个元素从头到尾都访问一次;
var arr = ['red','green','blue'];
for ( var i = 0 ; i < 3 ; i++){
console.log (arr[i])
}
- 因为我们的数组索引号从0开始,所以i必须从0开始;
- 输出的时候 arr[i] ,i 是当计数器,当索引号来用;
4.2动态检测数组的元素(获取数组长度)
var arr = ['red','green','blue'];
for ( var i = 0 ; i < arr.length ; i++){
console.log (arr[i])
}
- 使用''数组名.length''可以访问数组元素的数量
4.3实际案例1
求数组[2,6,1,7,4] 里面所有元素的和以及平均值。
思路:/声明一个求和变量sum。
/遍历这个数组,把里面每个数组元素加到sum里面。
/用求和变量sum除以数组的长度就可以得到数组的平均值。var arr = [2,6,1,7,4]; var sum = 0 ; /声明一个求和的变量 var average = 0 ; /声明一个求平均值的变量 for(var i = 0 ; i <arr.length ; i++) { sum+= arr[i} /求和:我们加的不是i计数器,而是数组里面的by个元素 } average = sum/arr.length /求平均值:arr之和sum除以数组个数arr.length console.log(sum,average); /想要输出多个变量,用逗号分隔即可
4.4实际案例2
求数组[2,6,1,77,52,25,7]中的最大值
思路:/声明一个保存最大元素的变量max。
/默认最大值可以取数组中的第一个元素。
/遍历这个数组,把里面每个数组元素和max相比较。
/如果这个数组元素大于max就把这个数组元素存到max里面,否则继续下一轮比较。
/最后输出这个maxvar sum = [2, 6, 1, 77, 52, 25, 7] var max = 1; /声明一个暂存sum最大值的变量 for (var i = 0; i < sum.length; i++) { if (sum[i] > max) { max = sum[i] /如果sum里面的第i个大于max里面的元素,那么就把最大值放入max中 } } console.log(max);
5.数组中的新增元素
5.1通过修改length长度新增数组元素
var arr = ['小白','小黑','大黄',‘瑞奇’];
索引号: 0 1 2 3
console.log (arr.length); /输出arr数组里面的总元素长度(数量)
arr.length=5; /把我们数组的长度修改为5,里面应该有5个元素
/其中索引号4,5的空间没有给值,就是声明变量未给值,默认值就是undefined
5.2通过修改索引号修改数组元素
var arr = ['小白','小黑','大黄',‘瑞奇’];
索引号: 0 1 2 3
arr[4] = '加菲猫';/加菲猫就成为了arr里面的元素,索引号第4个
arr[0] = '汤姆'; /汤姆元素会替换原来的小白元素
arr = '熊大'; /熊大元素会将原有的所有元素替换
5.3(案例)数组存放10个值
新建一个数组,里面存放10个整数(1~10)
var arr = [] ; / 声明一个空的数组来存放元素 for (var i = 1 ; i <=10 ; i++){ arr[i]=i /arr里面的里i个元素,等于i } console.log(arr);
5.4(案例)数组去重
将数组[2,0,6,1,77,0,52,0,25,7]中大于等于10的元素选出来,放入新数组。
思路:/声明一个新的数组用于存放新数据newArr。
/遍历原来的旧数组,找出大于等于10的元素。
/ 依次追加给新数组newArr。var arr = [2, 6, 1, 77, 52, 25, 7]; var newArr = []; /声明一个新的数组用于存放新元素 var j = 0; for (var i = 0; i<arr.length; i++) { if (arr[i] > 10) { //newArr[i] = arr[i]/使用此方法会导致arr每i个元素包括前面的索引全部赋给newarr newArr[j] = arr[i] /新数组一定是从0123开始递增,新增变量j,满足大于10一次 j++ /j就加一次 j就相当于newArr的索引&计数器 } } console.log(newArr); ------------------------------- var arr = [2, 6, 1, 77, 52, 25, 7]; var newArr = []; /声明一个新的数组用于存放新元素 var j = 0; for (var i = 0; i<arr.length; i++) { if (arr[i] > 10) { newArr[newArr.length] = arr[i] /length自动检测元素的变化 } } console.log(newArr);
5.5(案例)翻转数组
将数组['red','green','blue','pink','purple']的内容反过来存放
思路:/声明一个新数组 newArr
/把旧数组索引号第4个取过来(arr.length-1),给新数组索引号第e个元(newArr.length)
/我们采取递减的方式i--var arr = ['red', 'green', 'blue', 'pink', 'purple']; var newArr = []; for (i = arr.length - 1; i >= 0; i--) { /i需要获取arr最后一个索引,所以需要arr.lenght减1 /i>=0是arr的长度大于零会执行循环,i--避免死循环 newArr[newArr.length] = arr[i] /把arr里面的第i个就是arr.length-1最后一个给newArr /依次循环 } console.log(newArr);
5.6(案例)数组排序/冒泡排序
var arr = [4, 1, 2, 3, 4, 5];
for (var i = 0; i <= arr.length - 1; i++) { /外层循环次数
for (var j = 0; j <= arr.length - i - 1; j++) { /里层循环次数 每趟交换次数
if (arr[j] < arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.log(arr);