第一节:数组
1.1 什么是数组(数组就是一组数)
数组(Array)是有序的元素序列。 [1] 若将有限个变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把若干元素按有序的形式组织起来的一种形式。 [1] 这些有序排列的数据元素的集合称为数组。数组是用于储存多个相同类型数据的集合。
数组是有次序的元素序列:
数组中的每一个元素都有一个属于自己的编号 编号从0开始,到数组长度减1为止, 被称为下标。
数组的中数据如何存取:
通过下标存取,就是区分数组中的每一个数据。
1.2 为什么要用数组
对于存储大量数据的时候, 数组可以方便的批量开辟空间,存储批量数据,不需要一个一个定义变量。
1.3 数组的常规使用
-
数组的定义
// 方式一:创建一个空数组,没有空间长度 var 数组名 = new Array(); // 方式二:创建指定长度空间的数组 var 数组名 = new Array(长度数字); // 方式三:创建具有一些初始值的数组 var 数组名 = new Array(数据1,数据2,数据3); // 方式四: 用字面量"[]",创建空数组。**常用** var 数组名 = []; // 方式五: 用字面量"[]",创建有初始值的数组 **常用** var 数组名 = [数据1,数据2,数据3...];
数组的取值和赋值
数组取值:数组名[下标];
数组赋值(修改):数组名[下标] = 要修改的值;
<script type="text/javascript">
// 用字面量的方式创建数组
//var ary = [];
//alert(ary+" "+typeof(ary));
//var ary2 = new Array();
//alert(ary2+" "+typeof(ary2));
//var ary = [];
//document.write("数组长度:"+ary.length+"<br/>");
// 为数组元素赋值
// 虽然数组没有初始空间,可以通过下标动态扩展空间
// ary[0] = 10;
// ary[1] = 20;
// ary[2] = 30;
// 跳过了3,4下标
//ary[5] = 50;
//document.write("数组长度:"+ary.length+"<br/>");
//document.write(ary);
// 使用字面量定义有初始值的数组
var ary = [40,32,34,55,67,89];
document.write("长度:"+ary.length+" 下标:0 - "+(ary.length-1)+"<br/>"); //长度6 下标:0-5
// 批量输出
document.write(ary+"<br/>"); // 直接打印数组变量,会自动输出所有元素
// 挨着输出每个元素
document.write(ary[0]+"<br/>");
document.write(ary[1]+"<br/>");
document.write(ary[2]+"<br/>");
document.write(ary[3]+"<br/>");
document.write(ary[4]+"<br/>");
document.write(ary[5]+"<br/>");
document.write("<hr/>");
// 用循环方式输出数组元素
for(var i=0;i<6;i++){
// 输出下标
//document.write(i);
document.write(ary[i]+"<br/>");
}
// 修改值:将下标为3的数组元素改为1000
ary[3] = 1000;
document.write(ary);
</script>
数组遍历
使用普通for循环遍历重点练习
var ary1 = new Array();
ary1[0]=10;
ary1[1]=20;
ary1[2]=30;
for(var i=0;i<ary1.length;i++){
document.write(ary1[i]+" ");
}
document.write("<br/>");
var ary2 = new Array("aaa","bbb","ccc");
for(var i=0;i<ary2.length;i++){
document.write(ary2[i]+" ");
}
document.write("<br/>");
// 数组中可以存储任意类型的元素
var ary3 = [];
ary3[0] = 10;
ary3[1] = "张三";
ary3[2] = 200;
ary3[3] = 1.234;
for(var i=0;i<ary3.length;i++){
document.write(ary3[i]+" ");
}
document.write("<br/>");
// new Date():当前的系统时间
var ary4 = ["aaa",100,230,true,1.234,new Date()];
for(var i=0;i<ary4.length;i++){
document.write(ary4[i]+" ---- ");
}
使用for in遍历
var ary = [20,30,10,50];
// for 索引输出
for(var i=0;i<ary.length;i++){
document.write(ary[i]+" ");
}
document.write("<br/>");
// forEach 循环输出
for(var i in ary){ // 依次访问数组元素的下标,存储到i中
// i : 就是数组元素的下标: 0 到 长度-1
//alert(i);
alert(ary[i]);
}
1.4 数组的操作
扩展:选择排序,二分法 了解。
-
数组的查找 (重点练习)
1.请输入5个学生的成绩,并存储到数组中
2.遍历数组查找分数是80分的,是第几个学生
// 定义数组 var scoreAry = []; // 使用循环依次输入5个学生的分数 for(var i=0;i<5;i++){ // 接收分数 var score = Number(prompt("请输入第"+(i+1)+"个学生的分数:","")); // 存储到数组对应下标的空间中 scoreAry[i] = score; } // 输出输入的5个分数 document.write(scoreAry); // 扩展: 请输入你要查找的分数 // 遍历输出数据,判断是否有80分 // 定义标记变量,假设没有80分的 var flag = false; for(var i=0;i<scoreAry.length;i++){ //document.write(scoreAry[i]+" "); // 遍历数组中每个元素的时候,判断当前元素是否是80分 if(scoreAry[i]==80){ alert("找到80了,下标:"+i); flag = true; // 一旦找到,将标记变量改为true break; } } // 判断标记为false,提示没有找到 if(flag==false){ alert("对不起,没有80分的学生"); } // 扩展: 自己输入要找的数据,实现任意分数的查找
-
数组的插入
-
数组的删除
-
冒泡排序
-
扩展:选择排序,二分法 了解。
名称 描述 join(分隔符) 将数组转换为使用符号连接的字符串 concat(arr1,arr2) 与另一个数组合并为一个新数组 reverse() 将数组反转 sort() 对数组进行排序 push(ele1,ele2) 向数组末尾添加新元素 unshift(ele1,ele2) 向数组的开头添加新元素 pop() 删除数组中末尾的值 返回删除的值 shift() 删除数组中开头的值 返回删除的值 与pop()相反 splice(位置,删除个数,新数据..) 删除、替换、插入数组元素 indexOf(ele) 查找元素的下标位置