发表于: 2017-07-16 19:47:48
3 871
由于昨天的图不知道什么原因挂了,所以重发一下,今天学习的内容在后面;
昨天的日报内容:
今天完成的事:
解决了动态检测输入框的问题,添加一个onchange()就可以了,它是当失去焦点的时候执行括号内的函数,还有一个oninput()事件,它是实时的,也就是当对象活动的时候就可以执行函数;
学习了新的洗牌算法并成功将数组乱序;
学习了键盘事件,就是使用onkeydown(),它会在用户按下一个键盘按键时发生,也就是当你输入的时候就会开始执行;
明天计划的事:
学习正则表达式;
将输入值限制在一个范围内;
完成task2;
遇到的问题:
都是数组乱序引发的问题,最初想把杀手和平民两个数组推到一个数组内的时候发现我的方法得出来的只是单纯的角色数量,并没有生成与数量相等的字符串,如下图:
想到通过声明数组的方式来解决问题,然后使用循环函数,如果小于杀手数组的长度就推入“杀手”字符串
然后又引发一个新问题,就是平民数量的推入,如果用同样的方法循环继续推入,由于杀手已经占了一个位置,这就会导致平民会少推入一个,所以通过length-1的方式来解决
测试的时候发现杀手数量一旦变多,平民的数量就会出现问题,因为上面的公式将长度固定减1。先是想设置减去assign.length长度来抵消之前推入的杀手数量,但这会导致结果为0从而进入一个无限循环,因为它跟减号前的值相等,都是动态变化的。后来设置了一个临时数组来保存推入杀手后的数组长度,再减去这个临时数组就成功解决了问题
最后就是乱序的问题了,本想用上个任务的洗牌算法,但想到去重的问题没法实现就放弃了,因为数组内有很多重复的值,没办法使用indexof检测,后来经查找发现了一个新的写法:
这个方法最开始被下面那个循环赋值给绕懵圈了,于是拿了小本子演算一遍大概了解了这个方法的意思,简单讲就是两两交换,用这种方式来打乱数组就不怕重复的问题了;
收获:
学习了动态检测输入框的方法,没想到只用一个事件就可以了;
学习了新的洗牌算法,通过两两交换的方式来打乱数组,对数组内有重复值的情况下非常好用;
今天的日报内容:
今天完成的事:
学习了正则表达式,字面量语法是/pattern/attributes,其中斜杠间的内容可以是任何简单或复杂的表达式,后面的部分则是匹配模式以表明表达式的行为,可以设置g全局匹配,i表示不区分大小写,m表示多行匹配;
它有几个对象属性:global、ignorecase、multiline、lastindex、source,前三个分别可以检测是否设置了g、i、m;lastindex表示开始搜索下一个匹配想的字符位置,从0算起;source则是按照字面量形式返回正则表达式;
它还有两个主要方法exec()和test(),前者是检索字符串中指定的值,返回并确定位置,后者是检索字符串中指定的值,返回ture或false;
学习了parseint()函数,它的作用是解析一个字符串并返回整数,用它配合if函数来限制输入范围;
完成了task2;
明天计划的事:
熟悉task3并学习jquery库;
遇到的问题:
暂时没遇到问题;
收获:
按照我的理解正则表达式是用来搜索的?还以为限制范围要用到正则,没想到parseint就解决问题了;
对于新概念还是有点懵,还需要实践来加深理解;
评论