JS数组
1.数组,即一组数据,使用一个变量来存放多个数据
2.声明数组
(1)var 数组名 = [数据1,数据2,数据3,... ...]
(2)var 数组名 = new Array(数据1,数据2,... ...)
3.数组是引用类型的对象
引用类型的对象,是将数据保存在“堆”中的,在“栈”中,会对“堆”中数据的地址进行引用
(1)将数组赋值给其他变量时,实际赋的是数组的地址
(2)数组在做参数的时候,传递进去的实际上是地址(按地址传递)
(3)null 表示的是让引用类型的对象不再指向任何空间,一般用于主动释放对象的空间
4.访问数组的元素
赋值,取值都是使用下标来完成
(1)为数组的元素赋值
数组名 [下标] = 值
ex: var arr = ["山东","河南"]; //将第二个元素变为河北 arr[1] = "河北"; //在第三个位置增加一个元素 arr[2] = "山西"; //在第六个位置增加一个元素 arr[5] = "北京"; console.log(arr);
运行结果:

(2)获取数组中的值
数组名[下标]
(3)获取数组的长度
数组 . length
(1)可以将数组的length属性值设置为0,来清空数组
(2)配合循环,做数组的循环遍历操作
(3)配合着数组,找到最新元素要插入的位置
练习:
(1)定义一个函数,手动录入数组并查找数组中的最大值
//定义一个函数,找到整数数组中的最大值 function findMax(){ //手动录入数据到数组中 var arr = []; do{ var input = prompt("请输入一个整数(exit退出)"); if(input != "exit"){ arr[arr.length]=parseInt(input); } }while(input != "exit")
//打印输出数组 console.log(arr); //定义一个变量为max,并取值为数组的第一个整数,依次跟后边的整数比较,如果大于max,则赋值给max,直到循环结束 var max = arr[0]; for(var i=1;i<arr.length;i++){ if(max<arr[i]){ max = arr[i]; } } console.log("该数组的最大值为:"+max); }
(2)定义一个函数,查找指定元素的位置(下标)
function findArray(){ //定义一个数组 var array = [2,4,3,5,7,9,0]; //声明一个变量index,初始值为 -1,用于保存找到元素的下标 var index = -1; //从弹框中录入待查找的数据index var find = prompt("请输入要查找的数据"); //遍历循环数组,取出每个元素与find比较,如果相等,就将下标赋值给index for(var j=0;j<array.length;j++){ if(array[j] == find){ index = j; } } //判断index的值是否为-1,如果为-1,则提示为找到,否则打印index的值 if(index == -1){ console.log("未找到"); }else{ console.log("您查找的数据的下标为"+index); } }
(3)改进:定义一个函数,查找指定元素的位置,如果有多个相同的元素,下标全部打印
function findArray(){ //定义一个数组 var array = [2,4,3,5,7,9,0,3,2]; console.log(array); //声明一个index空数组,用于保存出现的所有下标 var index = []; //从弹框中录入待查找的数据find var find = prompt("请输入要查找的数据"); //遍历循环数组,取出每个元素与find比较,如果相等,就将下标保存到index中 for(var j=0;j<array.length;j++){ if(array[j] == find){ index[index.length] = j; } } //判断index数组的长度,如果长度为0,则输出未找到,负责输出index if(index.length == 0){ console.log("未找到"); }else{ console.log("您查找的数据下标为"+index); } }
5.使用 for…in 遍历数组
语法:
for(var 变量 in 数组){
//变量:表示的是数组中的每个元素的下标(属于 string 类型)
}
6.关联数组
用字符串做下标,就是关联数组
var array = []; array["西游记"] = "古代神话故事"; array["红楼梦"] = ["贾宝玉","林黛玉"];
注意:
(1) 关联数组是不算做数组内容的,不记录到length中
(2)关联数组只能通过字符串做下标取值
(3)允许通过 for…in 来循环遍历关联数组的字符串下标(也能遍历处内容的数字下标)

浙公网安备 33010602011771号