发表于: 2017-03-27 16:13:38
3 1227
今天完成的事情
今天完成了任务2,任务2的主要内容是从input里获得数据,然后根据数据来改变杀手和平民的数量,然后利用数组乱序来随机生成杀手的位置,最后把每个人的身份输出
明天计划的事情
如果任务2通过审核,明天开始学习任务3
遇到的问题
今天在看师兄代码的时候发现师兄在上一个function里用的变量下一个function里也能调用,而我自己的代码却不行,在网上找了很久终于明白,要在不同的function中调用同一个变量的话,要么这个变量是全局变量,要么要用return,而我在第一个function里声明的变量当然不能在别的function里调用
在生成杀手位置的时候,师兄用的是随机数的方法,我觉得还是麻烦了些,所以我用了洗牌算法,因为已经知道一共有多少人和多少个杀手,按顺序排列后重新打乱,就可以得到杀手随机位置的目的,乱序的方法有很多种,我只学会了其中两种。
任务要求里有正则表达式,我目前还不知道这是个什么东西,粗略的看了一下觉得很复杂,在任务过程中似乎没有使用的必要性,所以跳过了,以后再研究吧。
收获
洗牌算法
将倒数第一个对象和随机对象调换
然后将倒数第二个对象和随机对象调换
以此类推直到第一个对象也被调换达到洗牌目的
function
shuffle(aArr){
var
iLength = aArr.length,
i = iLength,
mTemp,
iRandom;
while
(i--){
if
(i !== (iRandom = Math.floor(Math.random() * iLength))){
mTemp = aArr[i];
aArr[i] = aArr[iRandom];
aArr[iRandom] = mTemp;
}
}
return
aArr;
}
评论