未加星标

JavaScript随机产生去重数组

字体大小 | |
[前端(javascript) 所属分类 前端(javascript) | 发布者 店小二04 | 时间 2017 | 作者 红领巾 ] 0人收藏点击收藏
javascript随机产生去重数组

一点号码匠昨天

码匠(html5学堂)数组、字符串、正则,三者应该说是众多开发者的死敌,方法很多,单纯的记住了没有意义,只有灵活应用才是王道~因此,对于此类问题,重要的是基本思路,根据思路回忆学过的知识,之后应用即可。


JavaScript随机产生去重数组
需求

总共需要在100个数字中,随机抽取10个不重复的数字。

原理

在最初时,设置了一个temp数组,所有的数组元素都是没有定义的。每次生成时使用随机函数以及数学的取整函数进行处理,之后进行判断,判断temp数组中的这个值是否存在。如果不存在,那么将这个数组的元素设置为1(也就是设置为存在状态),之后将获取到的这个num值push到数组当中,再将控制循环的变量加1。从而更好的控制while循环。

第二段代码比第一段代码的优势在于:第一段代码每次需要将当前新值与之前所有的值相对比,而且即便是生成的数字和之前数字不同,但仍要进行比较。也就是说,从第一个数到最后一个数,这10个数字的生成,如果是10个数字本身都没有任何重复的话(也就是直接符合要求),那么需要执行if判断语句10次,执行比较45次。而对于第二种方法,如果10个数字本身没有任何重复的话(也就是直接符合要求),那么只需要执行10次的判断语句,而不需要执行其他内容。从代码的运行上来说,性能要更好~~~

随机产生去重数组 方法1 var result = ;
for(var j = 0; j < 10; j++) {
result[j] = Math.round( Math.random * 100 );
if(j > 0) {
for(var m = j - 1; m >= 0; m--) {
if(result[j] == result[m]) {
j--;
break;
}
}
}
}
随机产生去重数组 方法2

代码中for循环和if语句嵌套的层次太多,如果不是随机取10个数,而是取更多的数的话,这样for循环的次数太多了,代码执行的时间也会变长。所以思考使用空间换时间的方式,来简化代码,并且减少语句的嵌套,代码如下:

var result = ;
var temp = ;
var len = 0;
var num;
while(len < 10){
num = Math.round( Math.random * 100 );
if(!temp[num]) {
temp[num] = 1;
result.push(num);
len++;
}
}

本文前端(javascript)相关术语:javascript是什么意思 javascript下载 javascript权威指南 javascript基础教程 javascript 正则表达式 javascript设计模式 javascript高级程序设计 精通javascript javascript教程

主题: JavaScriptJavaHTMLHTML5需求变量
分页:12
转载请注明
本文标题:JavaScript随机产生去重数组
本站链接:http://www.codesec.net/view/531500.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 前端(javascript) | 评论(0) | 阅读(28)