第十章 JS循环+数组浅入

1.知识回顾

1.1实践

<script>
    var i=0;
    for(i=0;i<3;i++){
        var score = Number(prompt("请输入第"+(i+1)+"个同学的成绩",""));
        if(i==0){
            document.write("第一个同学的成绩:"+"<br />");
        }else if(i==1){
            document.write("第二个同学的成绩:"+"<br />");
        }else{
            document.write("第三个同学的成绩:"+"<br />"); 
        }
        if(score>=90){
            document.write(score+"<br />"+"优秀"+"<br /><br />");
        }else if(score>=70){
            document.write(score+"<br />"+"良"+"<br /><br />");
        }else if(score>=60){
            document.write(score+"<br />"+"中"+"<br /><br />");
        }else{
            document.write(score+"<br />"+"差"+"<br /><br />");
        }
    }
</script>

1.2理论

分支:

if分支:单分支(if),双分支(if...else),多分支(if...else if...else...)

switch分支:switch case break default

循环:

while:固定次数(1.计数变量 2.条件判断 3.循环体 4.变量更新),不定次数

do...while:与while类似,区别是条件不成立时,do...while至少执行一次

for:主要用于固定次数循环

2.循环的使用

2.1 百钱买百鸡问题 

公鸡2文,母鸡1文,小鸡半文,每种至少一只,100文买100只鸡有多少可能性?

 分析:

设公鸡,母鸡,小鸡的个数分别是x,y,z

可设方程:x+y+z=100  2x+y+0.5z=100

由此可知x,y,z的取值范围

    <script>
        var i=1;
        var m=1;
        var x=1;
        var num1=0;
        var num2=0;
        for(i=1;i<48;i++){
            for(m=1;m<98;m++){
                x = 100 - m -i;
                if((2*i+m+(0.5*x))==100){
                    document.write("公鸡:"+i+"母鸡:"+m+"小鸡:"+x+"<br />");
                    num1++;
                }
                /*if((2*i+m+(0.5*x))<=100){
                   document.write("公鸡:"+i+"母鸡:"+m+"小鸡:"+x+"<br />");
                    num2++;
                }*/
            }
        }
        document.write("正好花100文:"+num1+"<br />");
        //document.write("不一定花光100文:"+num2);
    </script>

2.2 倒叙输出100以内的偶数

        var i=100;
        while(i>0){
            document.write(i+"<br />");
            i--;
            i--;
        }
        for(i=100;i>0;i--){
            if(i%2==0){
                document.write(i+"<br />")
            }
        }

2.3 计算1-10类加的和,并输出和大于20时假的值/停止循环(break)

        var sum =0;
        var flag=0;
        for(i=1;i<=10;i++){
            sum+=i;
            if(sum>20&&flag==0){
                flag=1;
                document.write(i+"值<br />");
                //break;
            }
        }
        document.write(sum);

2.4 计算五个学生的成绩,计算总成绩和平均分,若输入了错误的成绩,则不再计算

    <script>
        var i = 0;
        var avg = 0;
        var count=0
        var flag = 0;
        for(i;i<5;i++){
            var score = Number(prompt("",""));
            avg += score;
            if(score<0||score>100){
                flag++;
                //document.write("输入错误不能输出总分和平均分");
            }else if(score<80){
                //continue;
            }else{
                count++;
            }

        }
        /*if(flag==true){
            document.write("总分:"+ avg+"<br />平均分:"+(avg/5));
        }*/
        document.write("有效成绩个数:"+(5-flag));
        document.write("<br />80分以上比例:"+(count/(5-flag)));
    </script>

2.5 输入5个人的分数,统计80分以上的比例,要求用continue实现

	var count = 0;
	for(var i=1;i<=5;i++){
		var score = Number(prompt("请输入第"+i+"个学生的分数",""));
		if(score<80){
			continue;
		}
		count++;
	}

	document.write((count/5)*100+"%");

2.6 双层循环的练习

2.6.1 5*5的方阵

	/*
	5行5列
	*****
	*****
	*****
	*****
	*****
	*/
	//外层循环控制行数
	/*
	for(var i=1;i<=5;i++){
		//内存循环控制(列数)每行输出的内容
		for(var j=1;j<=5;j++){
			document.write("*");
		}
		document.write("<br>")
	}
	*/

2.6.2 5*5 三角方阵

	/*
	5行5列

	*      1   1
	**     2   2
	***    3   3
	****   4   4
	*****  5   5

	*/
	//外层控制行数
	/*for(var i=1;i<=5;i++){
		//内层控制列数
		for(var j=1;j<=i;j++){
			document.write("*");
		}
		document.write("<br/>");
	}*/

2.6.3 输出乘法口诀表

        for(var i=1;i<=9;i++){
            for(var k=1;k<=i;k++){
                document.write(k+"*"+i+"="+(i*k)+"&nbsp;&nbsp;");
            }
            document.write("<br />");
        }

3. 数组

费曼学习法:对学过的东西向别人表述,确保别人能听懂

3.1 什么是数组(数组就是一组数据)

        数组(Array)是有序的元素序列。若将有限个变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把若干元素按有序的形式组织起来的一种形式。这些有序排列的数据元素的集合称为数组。数组是用于储存多个相同类型(强类型语言存储相同类型的数据java,c#。弱类型语言的数组,可以存储各种类型的数据)数据的集合。

数组是有次序的元素序列:数组中的每一个元素都有一个属于自己的编号;编号从0开始,到数组长度减1为止, 被称为下标。

数组的中数据如何存取:通过下标存取,就是区分数组中的每一个数据。

3.2 为什么要用数组

        对于存储大量数据的时候, 数组可以方便的批量开辟空间,存储批量数据,不需要一个一个定义变量。

3.3数组的常规使用

3.3.1创建数组:

// 方式一:创建一个空数组,没有空间长度
var 数组名 = new Array(); 
// 方式二:创建指定长度空间的数组
var 数组名 = new Array(长度数字);
// 方式三:创建具有一些初始值的数组
var 数组名 = new Array(数据1,数据2,数据3);​
// 方式四: 用字面量"[]",创建空数组。**常用**
var 数组名 = [];
​// 方式五: 用字面量"[]",创建有初始值的数组 **常用**
var 数组名 = [数据1,数据2,数据3...];

3.3.2 数组的取值和赋值:

数组取值:数组名[下标];

数组赋值(修改):数组名[下标] = 要修改的值;

①如果数组没有存储数据,输出的结果是undefined;

②访问数组长度以外iade空间元素,返回undefined;

③越界设置数据,会动态扩展数组长度;

 3.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/>")
	}

使用forEach:

	//使用for each方式输出数组元素
	// 其中i是数组的下标
	for(var i in ary){
		alert(i+" : "+ary[i]);
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值