这里写目录标题
回顾
循环:
while
计数变量
while(条件){
// 循环体
计数变量更新
}
do…while
for
for(计数变量;条件;计数变量更新){
循环体
}
break: 遇到break循环结束
continue: 遇到continue,则后面的代码不执行,直接进入下次循环
break和continue: 可以和while,do…while,for结合使用
break和switch结合使用
费曼学习法:对学过的东西向别人表述,确保别人能听懂
补充案例:
//循环输入5个人的分数,如果分数无误则输出总分,平均分
// 如果录入的某个分数有误(小于0或大于100),则直接终止循环,并且输出错误提示,另外,不
//循环输入5个人的分数,如果分数无误则输出总分,平均分
// 如果录入的某个分数有误(小于0或大于100),则直接终止循环,并且输出错误提
//另外,不能输出总分和平均分。
//定义求和变量
var sum = 0;
//定义标记变量,用于记录错误情况
var flag = false;
// 循环输入
for(var i=1;i<=5;i++){
// 输入分数
var score = Number(prompt("请输入第"+i+"个学生的分数",""));
// 如果分数有误,则提示错误,修改标记,结束循环
if(score<0 || score>100){
document.write("出错了");
flag = true; //修改标记
break; //结束循环
}
// 累加分数
sum += score;
}
if(flag==false){
// 输出总分平均分
document.write("总分:"+sum+" 平均分:"+sum/5);
}
嵌套循环
a. 输出每一年的每一月
b. 输出5*5星星
c.输出三角形
1.d.输出九九乘法表
本章目标
数组定义
数组的访问赋值
数组的插入,删除,遍历
数组的方法
第一节:数组
1.1 什么是数组(数组就是一组数)
数组(Array)是有序的元素序列。 [1] 若将有限个变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把若干元素按有序的形式组织起来的一种形式。 [1] 这些有序排列的数据元素的集合称为数组。数组是用于储存多个相同类型(强类型语言存储相同类型的数据java,c#。弱类型语言的数组,可以存储各种类型的数据)数据的集合。
数组是有次序的元素序列:
数组中的每一个元素都有一个属于自己的编号 编号从0开始,到数组长度减1为止, 被称为下标。
数组的中数据如何存取:
通过下标存取,就是区分数组中的每一个数据。
数组名[下标]
1.2 为什么要用数组
对于存储大量数据的时候, 数组可以方便的批量开辟空间,存储批量数据,不需要一个
一个定义变量。
1.3 数组的常规使用
1.3.1 数组的定义
// 方式一:创建一个空数组,没有空间长度
var 数组名 = new Array();
// 方式二:创建指定长度空间的数组
var 数组名 = new Array(长度数字);
// 方式三:创建具有一些初始值的数组
var 数组名 = new Array(数据1,数据2,数据3);
// 方式四: 用字面量"[]",创建空数组。**常用**
var 数组名 = [];
// 方式五: 用字面量"[]",创建有初始值的数组 **常用**
var 数组名 = [数据1,数据2,数据3...];
1.3.2 数组的取值和赋值**
数组取值:数组名[下标];
数组赋值(修改):数组名[下标] = 要修改的值;
注意:当下标超过了数组长度时,在js中会动态扩展数组长度。在java中会爆出下标越界
异常。
<script type="text/javascript">
//普通变量:一次存储一个数据
//数组:可以存储批量数据
//场景:存储一个班级60人的js分数
/*var score1 = 78;
var score2 = 89;
var score3 = 98;
....
var score60 = 76;*/
//如何创建一个数组
//方式1: var 数组名 = new Array(长度); //长度可以省略
//方式2: var 数组名 = new Array(数据1,数据2,数据3);//创建有初始值的数据
//方式3: var 数组名 = []; //用字面量的方式创建一个空数组
//方式1:var 数组名 = new Array(长度)
//创建一个空数组
//var ary1 = new Array();
//创建一个长度为5的数组空间
var ary = new Array(5);
//length:输出数组的长度
document.write("长度:"+ary.length+"<br/>");
//数组的赋值:数组名[下标] = 数据
ary[0] = 98;
ary[1] = 33;
ary[4] = 56;
//访问数组的内容
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("<hr/>");
document.write(ary[5]); //超出数组下标,不会报错,输出undefined
document.write("<hr/>");
//使用循环输出数组内容
//ary.length是5:i的变化: 0 1 2 3 4
for(var i=0;i<ary.length;i++){
document.write(ary[i]+"<br/>");
}
</script>
<script type="text/javascript">
// var ary = new Array(); //长度为0的数组
// var ary = new Array(10); //只有一个整数,
// 表示数组长度是10,此时数组内容都是undefined
/*
//创建长度为4的数组,数组初始数据分别是10,11,12,13
var ary = new Array(10,11,12,13);
//长度
document.write("长度:"+ary.length+"<br/>");
document.write(ary[0]+"<br/>");
document.write(ary[1]+"<br/>");
document.write(ary[2]+"<br/>");
document.write(ary[3]+"<br/>");
*/
/*
//使用字面量定义空数组
var ary = [];
document.write("长度:"+ary.length+"<br/>");
//js的数组可以动态扩展
ary[0] = 10;
ary[1] = 20;
ary[2] = 30;
document.write("长度:"+ary.length+"<br/>");
*/
// new Date():获取系统时间
// 数组中的数据可以存储任意类型
var ary = ["abc",100,2.234,new Date()];
document.write("长度:"+ary.length+"<br/>");
for(var i=0;i<ary.length;i++){
//使用 数组名[下标] 访问每个数组元素
document.write(ary[i]+"<br/>")
}
document.write("<hr/>");
//使用for each方式输出数组元素
// 其中i是数组的下标
for(var i in ary){
alert(i+" : "+ary[i]);
}
</script>
1.3.3数组遍历
使用普通for循环遍历重点练习
var ary = ["abc",100,2.234,new Date()];
document.write("长度:"+ary.length+"<br/>");
for(var i=0;i<ary.length;i++){
//使用 数组名[下标] 访问每个数组元素
document.write(ary[i]+"<br/>")
}
1.3.4 使用forEach遍历
var ary = ["abc",100,2.234,new Date()];
document.write("长度:"+ary.length+"<br/>");
//使用for each方式输出数组元素
// 其中i是数组的下标
for(var i in ary){
alert(i+" : "+ary[i]);
}
1.4 数组的操作
1.4.1 数组的查找 (重点练习)
1.请输入5个学生的成绩,并存储到数组中
2.遍历数组查找分数是80分的,是第几个学生
<script type="text/javascript">
//定义数组存储5个学生的成绩
//并查找第一个80分的成绩是在数组的哪个位置上
//输入成绩:89,56,78,80,98
// 0 1 2 3 4
// 76,80,88,87,32
// 0 1 2 3 4
//定义长度为5的数组
var aryScore = new Array(5);
//循环输入5个学生的分数
for(var i=0;i<aryScore.length;i++){
//输入学的分数
var score = Number(prompt("请输入第"+(i+1)+"个学生的分数:",""));
//将分数存储到数组中
aryScore[i] = score;
}
//直接打印数组
//document.write(aryScore);
//循环遍历数组,并判断每个数组元素是不是80分,是80分则显示对应的数组下标
for(var i=0;i<aryScore.length;i++){
//alert(aryScore[i]);
//遍历数组,判断当前遍历的数据是否是80
if(aryScore[i]==80){
alert("80分的下标是:"+i);
break;
}
}
</script>
1.4.2 数组的插入
已知某数组: var ary = [20,12,33,45,67];
现在要输入一个任意数据,插入到数组下标为2的位置上
<script type="text/javascript">
//已知数组:20,12,33,45,67
//在下标为2的位置上插入一个数据(自己输入)
var ary = [20,12,33,45,67];
document.write(ary+"<br/>")
var num = Number(prompt("请输入一个要插入的数据:",""));
//使用循环进行移位操作
for(var i=ary.length;i>2;i--){
//将数组中前边的数据移位到后边
ary[i] = ary[i-1];
}
//将要插入数据存储到下标2的数组空间上
ary[2] = num;
document.write(ary);
</script>
1.4.3 数组的删除
1.4.4 冒泡排序
排序:
什么是排序: 将数据由底到高,由高到低按照特定次序呈现
为什么要排序: 通过排序可以直接拿到特定的数据,提升数据的利用效率
排序的核心: 比较和换位
数据结构可视化 数据结构可视化
Web 开发技术 Web 开发技术
超链接如下:https://developer.mozilla.org/zh-CN/docs/Web
<script type="text/javascript">
// 冒泡排序
// 数据比较换位
var ary = [56,32,8,76,12,1,3,6,4,5,100,99];
// 0 1 2 3 4
document.write(ary+"<br/><hr/>"); //56,32,8,76,12
// N元数组冒泡序,两两相比小前移
// 外层循环从1始,内层循环减i去
//冒泡排序
for(var i=1;i<ary.length;i++){
// 实现了第一轮的四次比较
for(var j=0;j<ary.length-i;j++){
// 比较和换位
if(ary[j]>ary[j+1]){
var temp = ary[j];
ary[j] = ary[j+1];
ary[j+1]=temp;
}
}
}
document.write(ary+"<br/><hr/>"); //
</script>
扩展:选择排序,二分法 了解。
1.5 数组的常用方法/函数
名称 | 描述 |
---|---|
join(分隔符) | 将数组转换为使用特定分隔符连接的字符串 |
concat(arr1,arr2) | 与另一个数组合并为一个新数组 |
reverse() | 将数组反转 |
sort() | 对数组进行排序,按字符大小规则逐位比较排序,不是按数值大小 |
push(ele1,ele2) | 向数组末尾添加新元素 |
unshift(ele1,ele2) | 向数组的开头添加新元素 |
pop() | 删除数组中末尾的值 返回删除的值 |
shift() | 删除数组中开头的值 返回删除的值 与pop()相反 |
splice(位置,删除个数,新数据…) | 删除、替换、插入数组元素 |
indexOf(ele) | 查找元素的下标位置 |
//var ary = [20,10,30,50,60];
//document.write(ary+"<br/>");
// 将数组中的元素,用指定的符号拼接为字符串
//var res = ary.join("----");
//document.write(res);
// 将数组中的反转
//ary.reverse();
//document.write(ary);
//var ary2 = [];
// 向数组中添加元素,从数组最后添加
//ary2.push(100);
//ary2.push("abc");
//ary2.push(2.34);
//document.write(ary2+"<br/>");
// 删除数组末尾的值
//ary2.pop();
//document.write(ary2);
//var ary3 = ["aaa","bbb","ccc","ddd","eee"];
//document.write(ary3+"<br/>")
// 使用splice删除下标为2的元素
// 从下标2的位置,删除一个元素
//ary3.splice(2,1);
//document.write(ary3);
// 从下标2的位置,不删除元素,但是添加两个新元素
//ary3.splice(2,0,"xxx","yyy");
//document.write(ary3);
// 查找数组中某个元素的位置
// 如果找不到返回-1
//alert(ary3.indexOf("ggg"));
var ary4 = [5,3,2,1,4,12,100];
document.write(ary4+"<br/>");
// 对数组元素排序:按照字符串的字符次序依次比较
ary4.sort();
document.write(ary4);
总结:
数组的定义
数组的赋值和使用
数组操作: 遍历查找,插入,删除
数据的常用方法
练习:
基础作业
0. 输出一个数组中所有80分的位置。
1.定义长度为 5的数组,使用循环通过输入框输入分数存入对应的数组元素中,并遍历输出。
2. 循环输入5个分数存入数组,如果分数输入有误(小于0,大于100),要提示输入错误,如果无误则输出数组。
3. 定义长度为10的数组,存储10个人的分数。统计大于80分的人数。
循环输入9个数字存入数组,然后3个一排输出
23,45,67,
98,12,44,
55,66,77
4.循环输入5个数字到数组中,统计最大值,最小值,最大值的位置和最小值的位置
var ary = [10,40,32,89,12]
5.使用splice实现有序数组的数据插入。
通过输入框输入一个数,将输入的数字插入到数组中之后要保证数组依然有序:
示例: 数组 [10,50,70,89,99],输入一个数字 83,将83插入到数组中,插入之后数组
依然有序,数组变为[10,50,70,83,89,99]
...给定一个有序数组ary
//定义变量,记录数组中,第一个比要插入的数据大的位置
var pos = -1;
for(var i=0;i<ary.length;i++)
{
//将数组中的数据和要插入的数据挨着比较
if(ary[i]>num)
{
//当找到第一个比插入的数据大的数据时,记录这个数据的位置,并退出循环
pos = i;
break;
}
}
alert(pos);
//循环之后,找到要插入的位置
//使用splice函数,将要插入的数据,插入到指定位置
ary.splice(pos,0,num);
//输出插入后的结果
document.write(ary);
扩展作业
1.var ary = [10,20,30,40,50,10,20,34,56,50]
将数组中的去重,返回去重之后的数组
2.定义长度为50的数组,用于存储1-100的随机数(Math.random()),要求50个数据都不能重复。
3.再学习两种新的排序算法。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/118169.html