javaScript随机生成一个5位以内的数,及数组对象Array原型forEach解析
2016-04-16 15:14
886 查看
记录:自学JavaScript一个半月,开始有点起色。通过在贴吧和csdn论坛上回答问题或看别人的答案,学习积累实战经验。
分享:下面我就来分享一个在贴吧遇到的比较常见的问题【如何生成一个5位以内的整数】
-->>思路分析,首先我们看到的是随机生成,于是乎就想到JS的一个原生方法:Math.random(),随机生成一个0-1的数字。下面就基于这个方法来实现我们的需求。
方法一、
这是一种最简单实现办法
这样就对IE6-8做了一个兼容,让它们也支持forEach方法!
方法二、
这个方法,其实思路也比较简单,不过效果不是特别好
方法三、
这个方法和上面的类似,不过更有随机性。
以上,希望能帮助JS初学者,本人才疏学浅,如有错误不足之处,欢迎指导斧正。
分享:下面我就来分享一个在贴吧遇到的比较常见的问题【如何生成一个5位以内的整数】
-->>思路分析,首先我们看到的是随机生成,于是乎就想到JS的一个原生方法:Math.random(),随机生成一个0-1的数字。下面就基于这个方法来实现我们的需求。
方法一、
这是一种最简单实现办法
var iTemp = (~~(Math.random()*100000)).toString(); //随机生成0-1的数,乘上100000得到一个整数位数最大为5的浮点数,按位取反,得到整数结果,并转换成字符串,赋值给iTemp console.log('随机数 ' + iTemp.length + '位\n' + iTemp);//打印出字符串的长度 console.log('分别是:'); iTemp.split('').forEach(function(v){//将字符串分割成数组,利用forEach遍历数组元素,并打印出整数的每一位 console.log(v); });在Firefox、Chrome及IE9+中支持forEach方法,forEach方法类似于for in,相当于for in的简写。如果我们要兼容IE6-8,那么需要对Array的原型做扩展。
console.log(Array.prototype.forEach);//IE6-8,打印出undefined,没有这个方法 Array.prototype.forEach = Array.prototype.forEach || function(fnCallback){ //兼容IE6-8 ,|| 是为了</span>防止覆盖Array原有的原型,也可以用if判断代替 if (typeof fnCallback != "function")throw new TypeError();//如果for传进来的参数不是一个函数,则抛出一个错误:TypeError for (var i = 0; i<this.length; i++){//这个就类似于for in的写法,遍历所有元素 if (i in this)fnCallback.call(this, this[i]);//指定fnCallback函数的执行环境 } };
这样就对IE6-8做了一个兼容,让它们也支持forEach方法!
方法二、
这个方法,其实思路也比较简单,不过效果不是特别好
var arr =[0,1,2,3,4,5,6,7,8,9];//定义一个包含0-9的数组 var a = arr[Math.floor(Math.random()*10)]+''; //Math.floor(Math.random()*10)生成一个0-9的索引,用于取出数组中的元素,加上一个空字符串让其变成字符串 var b = arr[Math.floor(Math.random()*10)]+''; var c = arr[Math.floor(Math.random()*10)]+''; var d = arr[Math.floor(Math.random()*10)]+''; var e = arr[Math.floor(Math.random()*10)]+''; console.log(~~(a+b+c+d+e));//拼接字符串,然后取整
方法三、
这个方法和上面的类似,不过更有随机性。
var arr =[0,1,2,3,4,5,6,7,8,9], //0-9数字范围 temp_arr=[], return_arr=[], num = Math.floor(Math.random()*5+1);//随机生成0-5,以此确定生成数字的位数 for(var index in arr){temp_arr.push(arr[index])}//复制一份数组 for (var i = 0; i<num; i++) { var arrIndex = Math.floor(Math.random()*temp_arr.length);//随机生成一个索引 return_arr.push(temp_arr[arrIndex]);//放入返回数组 } console.log(~~(return_arr.toString().replace(/,/g, '')));//转成字符串然后取整
以上,希望能帮助JS初学者,本人才疏学浅,如有错误不足之处,欢迎指导斧正。
相关文章推荐
- JS标签的各种事件的举例
- Jackson 框架,轻易转换JSON
- js入门
- ECHO.js 纯javascript轻量级延迟加载
- json-lib.jar开发包及依赖包的下载地址
- JSON-lib框架,转换JSON、XML不再困难
- JS实现重载
- [学习笔记]JavaScript进阶
- [学习笔记]JavaScript基础
- [学习笔记]用Javascript实现Windows任务管理器
- [学习笔记]jsp web.xml文件的作用及基本配置
- [学习笔记]JS获取当前日期,年月日
- [学习笔记]JS获取指定日期前一天
- [学习笔记]JS全选反选
- [学习笔记]JS四舍五入方法
- [学习笔记]JS下拉框赋值
- [学习笔记]zTree是一个很好的js插件实现加载树形结构
- [学习笔记]JavaScript之DOM基础
- js实现touch移动触屏滑动事件
- 关于href="javascript:void 0;"