发表于: 2017-03-29 23:48:27

2 1291


今天完成的事情:

今天把书上Ajax的Demo敲了一遍,加深印象,照着书上代码敲,结果有个单词还敲错了。。。今天指导师弟做任务一的时候发现了比我原来用的方法更简单的生成随即颜色的算法。周五小课堂轮到我讲洗牌算法,今天把JS任务2用到的洗牌算法又复习了一遍,对一些以前不太懂没搞明白的地方也有了更多的理解,希望到时候能给师弟们讲解清楚。

 

明天计划的事情:

师兄说得对,我不能再这样一直看书了,就算要看也不能全部时间都看书,要向成都武汉的同学看齐,调整好心态, 提高学习效率,速度推进任务进度。


遇到的问题:

郑州这边做到JS任务的普遍都感觉任务难,可能看好几天书,做任务还是无从下手,这时候就会想要找个师兄的代码来“仿写”。但须知欲速则不达,不经历风雨,怎能见彩虹。为了做任务而搜寻资料的过程中我们能学到很多知识,而直接找现成的代码仿写无疑会导致这种机会的丧失。更要命的是一旦习惯了这种“捡现成”的不劳而获的做法,会对非常重要的自学能力的成长非常不利。所以就算再怎么艰难,也要坚持住,不能一开始就找师兄的代码看,要靠自己。


收获:

1.JS生成随即颜色的方法

 function bg1() {

             return '#'+Math.floor(Math.random()*0xffffff).toString(16);

 }

16进制表示的颜色从#000000到#ffffff,后面那六位数是16进制数,相当于“0x000000”到“0xffffff”。0x表示16进制,toString(16)可以将小数点前的数字转换为16进制的格式,这里的0xffffff也可以换成16777215。

 

function bg2(){

             var r=Math.floor(Math.random()*256);

             var g=Math.floor(Math.random()*256);

             var b=Math.floor(Math.random()*256);

             return "rgb("+r+','+g+','+b+")";

 }

这种方法就是我之前用的,也是利用Math.random()生成rgb格式的随机颜色,但没有第一个方法简洁。

2.洗牌算法

洗牌算法是一个比较形象的术语,本质上让一个数组内的元素随机排列。

  Array.prototype.shuffle = function() {

    var input = this;

    for (var i = input.length - 1; i >= 0; i--) {

      var randomIndex = Math.floor(Math.random() * (i + 1));//获取小于i+1的随机整数

      var itemAtIdex = input[randomIndex];

      input[randomIndex] = input[i];

      input[i] = itemAtIdex;//input[randomIndex]和input[i]交换值

    }

    return input;

  }

这里创建了shuffle()方法,将该方法挂载在Array对象的原型(Array.prototype)下面,所以任何数组都可以直接调用该方法。

其工作原理就是从数组的最后一个元素开始往前,每个都与前面的随机序号的元素交换值。



返回列表 返回列表
评论

    分享到