先看JS循环作业题:
一.一张纸的厚度是0.0001米,将纸对折,对折多少次厚度超过珠峰高度8848米
<script type="text/javascript"> var a=0.0001; var i=0; while(a<=8848){ a=a*2; i++; } alert(i); </script>
这个题主要考察的点:1.当要求得到什么效果或者多少次结束时,我们可以考虑运动while语句是比较方便的;
2.对折一次厚度要*2,所以下次折叠后,厚度为上一次的2倍
二.公鸡2文,母鸡1文,小鸡半文,每种至少一只,100文买100只鸡有多少可能性?
通过分析我们可以得到 公鸡最多买49只,母鸡最多97只,小鸡最多194只
<script type="text/javascript"> var i=0; for(var a=1;a<=49;a++){ for(var b=1;b<=97;b++){ for(var c=1;c<=194;c++){ if((a+b+c==100)&&(a*2+b*1+c*0.5==100)){ i++; } } } } alert(i); </script>
分析:1.这个题逻辑考察的是for循环,for循环四要素:初始值-- 循环条件--- 状态改变--- 循环体
2.此外这个题目还考察了逻辑运算符(并:&&) 我们学习的三个逻辑运算符为[并:&&] [或:||] [非:!]
三.有一对幼兔,幼兔1个月后长成小兔,小兔1个月后长成成兔并生下一对幼兔,问6个月后有多少对兔子,幼兔、小兔、成兔对数分别是多少?
经分析我们得到:
第0个月:幼兔 1 小兔 0 成兔 0
第1个月:幼兔 0 小兔 1 成兔 0
第2个月:幼兔 1 小兔 0 成兔 1
第3个月:幼兔 1 小兔 1 成兔 1
第4个月:幼兔 2 小兔 1 成兔 2
第5个月:幼兔 3 小兔 2 成兔 3
第6个月:幼兔 5 小兔 3 成兔 5
当前月份幼兔(y) = 上个月的成兔(sc)+上月小兔(sx)
当前月份小兔(x) = 上月幼兔(sy)
当前月份成兔(c) = 上月成兔(sc)+上月小兔(sx)
所以:
<script type="text/javascript"> var y=1; var x=0; var c=0; var sy=0; var sx=0; var sc=0; for(i=1;i<=6;i++){ sy=y; sx=x; sc=c; y=sc+sx; x=sy; c=sc+sx; } alert(y+","+x+","+c); alert(i); </script>
这个题我是有点晕乎的,听到解析后思路瞬间打开了,以后还得注重问题的分析以及语言的逻辑性
JS数组(数据结构)
一.数组的定义方式
方式1:
<script type="text/javascript"> var arr = new Array();-----这一步之后,变量arr变为数组 arr[0]=1;---------------arr[]里面为索引,索引值从0开始 arr[1]=2; arr[2]=3; alert(arr[0]); </script>
方式2:
<script type="text/javascript"> var arr = new Array(1,2,3,4,5); alert(arr[1]); </script>
方式3:
<script type="text/javascript"> var arr = new Array(); arr.push(1); arr.push(2); alert(arr[0]); </script>
方式4:
<script type="text/javascript"> var arr = [1,2,3,4,5]; alert(arr[2]); </script>
一般我们只需要掌握方式1和2就好了
特别注意:var arr =new Array(); /*这一步之后,变量arr变为数组*/
arr[a]=...;
1.a的值是索引,所以的值从0开始
2.数组的索引叫做(key),数组里面存的值叫做(value).
3.key和value是成对存在的,叫做(键值对)
二.强类型语言三个特点(弱类型语言“JS”可以不遵循,灵活性高):
1.数组存储必须是连续的;
2.数组必须规定长度;
3.必须要规定存储的类型
三.数组长度
1.强类型语言:var arr =new Array(5); /*表示数组长度是5,了解内容*/
2.弱类型语言可以存储任何类型的数据(既能存整数,又能存字符串,还能存别的数据)
<script type="text/javascript"> var arr = new Array(); arr[0]=1; arr[1]=2; arr[2]="hello"; alert(arr[2]); </script>
3.数组长度 length
<script type="text/javascript"> var arr = [1,2,3,4,5,6]; alert(arr.length); </script>
4.其他
arr.length; 代表属性
arr.push(); 代表方法
四.二维数组(相当于excel表格中的第几行第几列代表的数据,映射成一个表格)
<script type="text/javascript"> var arr = new Array( new Array(11,12,13,14,15), new Array(21,22,23,24,25), new Array(31,32,33,34,35) ); alert(arr[0][4]); </script>
五.遍历数组
1.for循环
<script type="text/javascript"> var arr = new Array(62,31,11,7,18,20,11); for(var i=0;i<arr.length;i++){ alert(arr[i]); } </script>
注意:1.共跳转7次,在这里我们需要循环条件为 i<arr.length
2.for循环是匹配数组的
3.在数组中必须保证arr(var i=0;)开始
2.foreach循环(在强类型语言中运用,在JS语言中没有foreach)
在JS用法
<script type="text/javascript"> var arr = new Array(62,31,11,7,18,20,11); for(var a in arr){ alert(arr[a]); } </script>
这样运用foreash循环结果和上面for循环结果是一致的