发表于: 2017-05-15 00:51:12

1 949


天做了什么事:

1.在刷面试题,并且准备怎么吹项目。

2.准备简历,现在心里好虚,要好好利用时间,有点怂了。

明天要做什么事:

1.准备周二的大事

2.看书,读英语,写文章

遇到了什么问题:

1.暂无具体问题

收获
1.关于如何获得不重复随机数组的方法写了一篇分享:

获得不重复的随机数组。

获得不重复随机数组的方法非常多,这里就介绍一种:使用indexOf()的方法来去重,然后通过push()方法来添加数组

push() 方法的作用:

push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。

indexOf()方法的定义及介绍:


来自W3C

看完了还是一脸懵逼,到底跟随机数组去重有什么关系??

这里有一句特别关键:

注释:如果要检索的字符串值没有出现,则该方法返回 -1。

依靠这句注释,通过if条件判断,我们就可以做出随机数组去重的功能。

代码:

//num是一个数组,randomNum是一个随机数值。
 while (num.length<3){//num.length代表数组的长度,当数组的长度不再满足小于3,跳出循环
       var randomNum=Math.floor(Math.random()*9);//获得在0-9之间的随机数
       if (num.indexOf(randomNum)<0){ //判断randomNum之前有没有在数组里面,如果没有,就添加进去,如果有,重新循环。
            num.push(randomNum);            // 将randomNum这个随机数,添加到num这个数组里面。
         }
        console.log(num);
    }

代码思路:

1.先限定数组的长度,否则就成死循环了。
2.获得一个随机数
3.判断是否已经在数组里面,如果没有,就执行if下面的函数。
4.没有出现这个随机数,indexOf()这个方法会返回-1,这是判断条件的依据。
5.当随机数达到三个了就跳出循环。此时num数组已经去重完毕。

代码执行演示:

以下是演示的一个栗子,当数组里面已经有6了,再随机到6的时候,就会跳过push,直到随机到不重复的


ps:indexOf()这个方法去重效率到后期偏低,仅适用于数据量比较小的时候,因为后期数据量大的话,数组中每一个都进行依次比较的话,时间方面会花很长时间。

掘金相关文章:https://juejin.im/post/59116a77ac502e006557afc2

我的学员服务器:http://119.10.57.69:880/jnshu3950/jnshu/index.html



返回列表 返回列表
评论

    分享到