目录
数组
为什么要学习数组
之前学习的数据类型如Numbe、String,只能存储一个值,如果我们项存储班级中所有同学的姓名,此时又该如何存储呢?这时我们就要用到数组了。
数组的概念和定义
- 数组的概念:所谓数组,就是将多个元素(通常是同一数据类型,当然也可以是不同的数据类型,但是不推荐使用这种方式)按一定顺序排列放到一个集合中,那么这个集合我们就称之为数组
- 定义:数组是一个有序的列表,可以再数组中存放任意的数据,并且数组的长度可以动态的调整
通过数组字面量创建数组
- 数组的字面量是 [ ],通过中括号我们就可以看出这是一个数组。如 var students = [ ]; 虽然这是一个空数组
- 数组是一种数据类型,就是数据类型Number、String一样
- 数组是有顺序的,数组的长度是元素的个数,数组下标从0开始,最后一个数组的下标是length-1
如何获取数组中的数据
通过索引/下标来获取,如返回数组第一个元素: console.log( students[ 0 ] );
获取数组中最后一项的值
当不知道元素个数时,我们可以 console.log( students.length - 1);
获取数组的长度
console.log( students.length );
数组的长度和元素都可以动态的改变
var names = ['wang', 'ling', 'Eileen', 'zhao']; //修改数组中的元素 names[0] = 'pricess'; //给数组增加一项 names[6] = 'Bing'; //注意:此时数组的长度length为7,其中第4,5项为undefined
获取数组中的每一项并打印(遍历数组)
var names = ['wang', 'ling', 'Eileen', 'zhao']; for (var i = 0; i < names.length; i++){ console.log(names[i]); }
遍历数组,从最后一项开始反过来打印
var names = ['wang', 'ling', 'Eileen', 'zhao']; for (var i = names.length - 1; i >= 0; i--){ console.log(names[i]); }
清空数组
把数组长度赋值为0即可, 即names.length = 0;
数组案例
求一组数中的最大值和最小值,以及其所在位置
var numbers = [15, 646, 89, 2, 49, 22]; var max = numbers[0]; var mix = numbers[0]; // 最大值的索引 var maxIndex = 0; // 最小值的索引 var minIndex = 0; for(var i = 1; i < numbers.length; i++){ // 找最大数 if (max < numbers[i]){ max = numbers[i]; maxIndex = i; } if (min < numbers[i]){ min = numbers[i]; minIndex = i; } } console.log(max,min); console.log(maxIndex,minIndex);
将数组中不为0的元素组成一个新的数组
var numbers = [15, 646, 89, 2, 49, 22]; var array = []; for(var i = 1; i < numbers.length; i++){ if (numbers[i] !== 0){ array[array.length] = numbers[i] } } console.log(array);
翻转数组
var numbers = [15, 646, 89, 2, 49, 22]; var newArray = []; for(var i = numbers.length - 1; i >= 0; i--){ newArray[newArray.length] = numbers[i]; } console.log(newArray);
冒泡排序从小到大
冒泡排序是一种简单的排序算法,它重复的走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来,走访数列的工作是重复的进行直到没有再需要交换,也就是说数列已经排列完成,这个算法的名字由来是因为越来的元素会经由交换慢慢浮到数列的顶端。
var numbers = [15, 646, 89, 2, 49, 22]; // 外层循环:控制趟数,每一躺找到一个最大值 for(var i = 1; i < numbers.length - 1; i++){ //此处减1是因为第一趟排序是两两比较,比较次数是length-1 // 内层循环:控制比较的次数,并且比较两个数的大小,大的往后移,小的往前挪 for (var j = 0; j < number.length - 1 - i; j++){ //两两比较,从小到大排序 if( numbers[j] > numbers[j+1]){ // 交换位置 var tmp = numbers[j]; //声明一个变量来存储比较后较大的 numbers[j],方便后续的位置交换 numbers[j] = numbers[j+1]; numbers[j+1] = numbers[j]; } } } console.log(numbers);