一、什么是数组
1.数组:是一种数据结构。存放的是一系列变量的集合。在内存中表现为一串连续的内存单元
2.定义数组
(1)使用字面量'[]'来定义
注意:索引(下标)从0开始,到数组的长度减1
每个数组都有一个默认的属性length,代表数组的长度(数组的单元个数)
(2)使用Array的构造方法:Array是数组类
3.数组元素的访问:数组名[下标]
下标:即索引
练习:练习输出一个数组(要求使用for循环,将数组元素在一行显示)
4.数组的遍历:不重复的访问数组元素
(1)普通的for循环
(2)for...in
for(let 变量名 in数组名和对象名){...}
let arr = [10,20,30]
for(let i in arr){...} //i表示数组的索引
(3) for...of循环
for(let 变量名 of 数组名){...}
let arr = [10,20,30]
for(let val in arr){...}
(4)forEach循环
数组名.forEach(function(value,index){...})
比较for、for...in、for...of、forEach循环,说说他们的区别
1.for循环、for...in循环和for...of循环能中断循环(使用break,continue);forEach不可以
2.for循环、forEach循环和for...of循环不能直接遍历对象,for...in可以
3.for...in遍历的是数组的索引,for...of遍历数组元素值
4.for...of不能循环普通的对象,需要通过和Object.keys()搭配使用
5.forEach与for当循环遍历为空的数组时,forEach会跳过为空的值,for不会跳过为空的数据,会直接显示underfiend.两者都能识别出NULL
练习:定义一个具有10个单元的数组,数组元素有Math对象随机生成(10-50之间)。输出数组的最大值和最小值
(5)使用map函数遍历:返回一个新的数组,不会影响原数组
二、数组元素的排序
1.排序:使用数组元素有序(升序)
2.排序的步骤:比较、交换
3.排序算法
(1)冒泡排序:数据两两比较,若存在大小关系则进行交换
需要通过循环嵌套来实现(两层循环)
外层循环:控制排序的趟数
内层循环:进行数据的比较
let arr = [89,15,76,99,18,35];
console.log( "排序前数组"+arr);
for(let i = 0; i < arr.length; i++){
for(let j = i + 1; j < arr.length; j++){
if(arr[i]<arr[j]){
let temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
}
}
}
console.log( "排序后数组"+arr);
(2)选择排序法:每次从当前无序列表中找出最小数并记录其下标,然后让最小数与当前无序列表的第一个数进行交换,如此循环知道数组有序
let arr = [89,106,59,26,46,94,15];
console.log("排序后数组"+arr);
for (let i = 0; i < arr.length-1; i++) {
let min = arr[i];
let k = i;
for (let j = i+1; j < arr.length; j++) {
if (min >= arr[j]) {
min = arr[j];
k = j;
}
}
if (k != i) {
let temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
}
}
console.log("排序后数组"+arr);
三、数组常用的函数
1.join():将数组元素转换成字符串
2.push():在数组的末尾添加一个或多个元素
3.pop():在数组的末尾删除一个元素,函数返回被删除的元素
4.shift():在数组的首部删除一个元素,函数返回被删除的元素
5.unshift():在数组的首部插入一个或者多个元素
6.slice():切片函数。会接受一个或两个参数,从数组中截取部分函数。返回值是数组
(1)slice(索引):截取数组中从给定所以到末尾的所有元素
(2)slice(索引1,索引2):截取数组中索引1到索引2之间的所有元素(包含所有1,不包含索引2)
索引:可以为负数,若是负数表示从后向前找元素
7、fill()函数:用给定的值填充数组
8、filter()函数:对数组元素进行过滤,参数是一个函数,返回值是一个数组
四、二维数组
1.一维数组:通过一个下标就可以访问数组元素
2.二维数组:通过两个下标来确定一个数组元素
3.定义方式:
(1)通过数组字面量'[]'定义:
let arr = [[1,2,3],[4,5,6],[7,8,9]] //定义一个3行3列的二维数组
4.二维数组元素的访问
(1)按行优先---默认方式
数组名[行下标][列下标]
(2)按列优先
数组名[列下标][行下标]