用原生JS产生随机长度和随机值的数组
来源:互联网 发布:mac如何安装photoshop 编辑:程序博客网 时间:2024/05/30 04:51
之前一直想写个产生随机数组的方法,现在终于做了。向封装好的方法传入四个参数:数组最小长度、数组最大长度、数组元素最小值、数组元素最大值。调用产生数组的方法后,再用同一命名空间内的结果数组获取结果就行。
下面上硬硬的干货(100%源代码,揭示了整个"过程"-_^||):
////Version Zero ////粗糙版本,提供了生成随机数组(最大长度7、数组元素最大值7)的功能,但代码不好复用,全局变量太多,子函数太分散。 ////功能性符合需求,鲁棒性(健壮性)、可扩展性、可维护性、灵活性、复用性都不高 //var arrRandomNums = []; //var maxShowNum = getRandCount(); //function getRandCount() { // var num = parseInt(Math.random() * 10); // return num > 7 ? 7 : num; //} //var generateRamdonNumber = function (count) { // var rand = parseInt(Math.random() * 10); // if (rand > 7) { // return false; // } // for (var i = 0; i < arrRandomNums.length; i++) { // if (arrRandomNums[i] == rand) { // return false; // } else { // } // } // arrRandomNums.push(rand); //} //var needReason = function () { // for (var i = 0; ; i++) { // if (arrRandomNums.length < maxShowNum) { // generateRamdonNumber(maxShowNum); // } else { // break; // } // } //} //$(document).ready(function () { // $('#btnNeedReason').on('click', function () { // maxShowNum = getRandCount(); // arrRandomNums = []; // needReason(); // $('#testFun input[name="cbcShowCols"]').each(function (ind) { // var isShow = false; // for (var i = 0; i < arrRandomNums.length; i++) { // if (arrRandomNums[i] == ind) { // isShow = true; // i = arrRandomNums.length; // } // } // $(this).prop('checked', isShow); // }); // }); // $('#btnFilterCols').on('click', function () { // var currentSelectShowCols = []; // $('#testFun input[name="cbcShowCols"]:checked').each(function (ind) { // currentSelectShowCols.push($(this).val()); // }); // var strCols = currentSelectShowCols.join('-'); // $.post( // '/UserDashboard/ChangeShowColumn', // { // showCol: strCols // }, function (res) { // if (res.slt.toLowerCase() == 'true') { // //alert(res.msg); // window.location.reload(true); // } else { // alert('error' + res.msg); // } // } // ); // }); //}); ////Version One percent five //尝试在一个独立namespace内,用闭包产生一组长度、大小不固定的随机数组,没成功!!!! //(function () { // var _NS = function () { // } // _NS.prototype.alert = function () { // alert('900'); // return 900; // } // window.NS = new _NS(); //})(); //(function () { // this.arrRandomNums = []; // this.maxShowNum = 900; // this.myfunction = function () { // alert(maxShowNum); // return maxShowNum; // } // window.GetRandomArray = this; //})(); //var GetRandomArray = { // arrRandomNums: [], // maxShowNum : 0, // myfunction : function () { // alert(maxShowNum); // } //} ////Version One ////依据单一原则,开闭原则,将分散的函数合并到一起 ////数据仓储data warehouse //var DataInfoMining = { // randomNums: [2, 1, 3, 2, 1, 3] //}; //方法 //var tryGenerateRandomArr = function (maxShowNum, numMaxValue) { // var arrRandomNums = []; // //console.log('maxShowNum : ' + maxShowNum + 'numMaxValue : ' + numMaxValue); // //获取随机数 // var getSingleRandNum = function (maxValueLimit) { // var num = parseInt(Math.random() * 10); // return num > maxValueLimit ? maxValueLimit : num; // }; // var ShowNums = getSingleRandNum(maxShowNum); // //动态生成随机数组 // var needReasonWhyCheckBoxNotClick = function () { // arrRandomNumsLocal = []; // for (var i = 0; i < ShowNums; i++) { // var RandNumber = getSingleRandNum(numMaxValue); // arrRandomNumsLocal.push(RandNumber); // } // return arrRandomNumsLocal; // } // arrRandomNums = needReasonWhyCheckBoxNotClick(); // //for (var i = 0; i < arrRandomNums.length; i++) { // // console.log('get arrRandomNums[' + i + '] : ' + arrRandomNums[i]); // //} // return arrRandomNums; //} //window.onload = function () { // DataInfoMining.randomNums = tryGenerateRandomArr(8, 3); // for (var i = 0; i < DataInfoMining.randomNums.length; i++) { // console.log('get arrRandomNums[' + i + '] : ' + DataInfoMining.randomNums[i]); // } //}; //$(document).ready(function () { // $('#btnNeedReason').on('click', function () { // var arrRandomNums = DataInfoMining.randomNums; // $('#testFun input[name="cbcShowCols"]').each(function (ind) { // var isShow = false; // for (var i = 0; i < arrRandomNums.length; i++) { // if (arrRandomNums[i] == ind) { // isShow = true; // i = arrRandomNums.length; // } // } // $(this).prop('checked', isShow); // }); // }); // $('#btnFilterCols').on('click', function () { // var currentSelectShowCols = []; // $('#testFun input[name="cbcShowCols"]:checked').each(function (ind) { // currentSelectShowCols.push($(this).val()); // }); // var strCols = currentSelectShowCols.join('-'); // $.post( // '/UserDashboard/ChangeShowColumn', // { // showCol: strCols // }, function (res) { // if (res.slt.toLowerCase() == 'true') { // //alert(res.msg); // window.location.reload(true); // } else { // alert('error' + res.msg); // } // } // ); // }); //}); ////Version Two ////数据和方法封装在一个命名空间内,防止namespace pollution和便于管理(比如维护、扩展) //var DataInfoMining = { // randomNums: [1, 3, 1, 4, 6, 6, 6, 2, 1, 3, 2, 1, 3], // tryGenerateRandomArr: function (maxShowNum, numMaxValue) { // try { // //获取随机数 // var getSingleRandNum = function (maxValueLimit) { // var num = parseInt(Math.random() * 10); // return num > maxValueLimit ? maxValueLimit : num; // }; // //数组长度随机,但不超过最大值maxShowNum // var ShowNums = getSingleRandNum(maxShowNum); // //动态生成随机数组 // var needReasonWhyCheckBoxNotClick = function (outsideShowNum) { // DataInfoMining.randomNums = []; // for (var i = 0; i < 1000; i++) { // //数组元素值不超过最大值numMaxValue // var RandNumber = getSingleRandNum(numMaxValue); // //数组元素是否重复 // var isReperatValue = false; // var len = DataInfoMining.randomNums.length; // for (var j = 0; j < len; j++) { // if (DataInfoMining.randomNums[j] == RandNumber) { // isReperatValue = true; // j = len; // } // } // //数组长度是否达到要求,达到要求退出 // var isGetAndLeave = false; // if (!isReperatValue) { // DataInfoMining.randomNums.push(RandNumber); // //满足数组长度后退出 // if (DataInfoMining.randomNums.length == outsideShowNum) { // isGetAndLeave = true; // } // } // if (isGetAndLeave) { // console.debug('current i : ' + i); // break; // } // } // } // //!!!!ShowNums无法在needReasonWhyCheckBoxNotClick内自动获取到,只能通过形参传进方法内 // needReasonWhyCheckBoxNotClick(ShowNums); // //console.log('maxShowNum : ' + maxShowNum + 'numMaxValue : ' + numMaxValue); // //for (var i = 0; i < DataInfoMining.randomNums.length; i++) { // // console.log('get arrRandomNums[' + i + '] : ' + DataInfoMining.randomNums[i]); // //} // } catch (e) { // console.error(e + '====' + e.message); // } // } //}; //Version Three ////之前数组长度和元素值,只有最大值限制(maxShowLen\numMaxValue),现在增加最小值限制 //数据和方法封装在一个命名空间内,防止namespace pollution和便于管理(比如维护、扩展) var DataInfoMining = { randomNums: [1, 3, 1, 4, 6, 6, 6, 2, 1, 3, 2, 1, 3], tryGenerateRandomArr: function (minShowLen, maxShowLen, numMinValue, numMaxValue) { try { //获取随机数 var getSingleRandNum = function (minValueLimit, maxValueLimit) { var num = parseInt(Math.random() * 10); //num = num > maxValueLimit ? maxValueLimit : num; return num < minValueLimit ? minValueLimit : num > maxValueLimit ? maxValueLimit : num; }; //数组长度随机,但不超过最大值maxShowLen var ShowNums = getSingleRandNum(minShowLen, maxShowLen); //动态生成随机数组 var needReasonWhyCheckBoxNotClick = function (outsideShowNum) { DataInfoMining.randomNums = []; for (var i = 0; i < 1000; i++) { //数组元素值不超过最大值numMaxValue var RandNumber = getSingleRandNum(numMinValue, numMaxValue); //数组元素是否重复 var isReperatValue = false; var len = DataInfoMining.randomNums.length; for (var j = 0; j < len; j++) { if (DataInfoMining.randomNums[j] == RandNumber) { isReperatValue = true; j = len; } } //数组长度是否达到要求,达到要求退出 var isGetAndLeave = false; if (!isReperatValue) { DataInfoMining.randomNums.push(RandNumber); //满足数组长度后退出 if (DataInfoMining.randomNums.length == outsideShowNum) { isGetAndLeave = true; } } if (isGetAndLeave) { console.debug('current i : ' + i); break; } } } //!!!!ShowNums无法在needReasonWhyCheckBoxNotClick内自动获取到,只能通过形参传进方法内 needReasonWhyCheckBoxNotClick(ShowNums); //单元测试、持续集成测试Test Drive Developing(TDD) //console.log('maxShowLen : ' + maxShowLen + 'numMaxValue : ' + numMaxValue); //for (var i = 0; i < DataInfoMining.randomNums.length; i++) { // console.log('get arrRandomNums[' + i + '] : ' + DataInfoMining.randomNums[i]); //} } catch (e) { console.error(e + '====' + e.message); } } }; //window.onload = function () { // console.log(console.time('========time profile========')); // DataInfoMining.tryGenerateRandomArr(8, 8); // //DataInfoMining.randomNums = tryGenerateRandomArr(8, 8); // console.trace('after creating trace: '); // console.debug('after creating debug: '); // console.hasOwnProperty('log'); // console.hasOwnProperty('test'); // console.info('after creating info: '); // console.assert(true, 'after creating info: '); // for (var i = 0; i < DataInfoMining.randomNums.length; i++) { // console.log('arrRandomNums[' + i + '] : ' + DataInfoMining.randomNums[i]); // } // console.log(console.time('========time profile========')); //}; $(document).ready(function () { $('#btnNeedReason').on('click', function () { DataInfoMining.tryGenerateRandomArr(1, 4, 4, 7); var arrRandomNums = DataInfoMining.randomNums; $('#testFun input[name="cbcShowCols"]').each(function (ind) { var isShow = false; for (var i = 0; i < arrRandomNums.length; i++) { if (arrRandomNums[i] == ind) { isShow = true; i = arrRandomNums.length; } } $(this).prop('checked', isShow); }); }); $('#btnFilterCols').on('click', function () { var currentSelectShowCols = []; $('#testFun input[name="cbcShowCols"]:checked').each(function (ind) { currentSelectShowCols.push($(this).val()); }); var strCols = currentSelectShowCols.join('-'); $.post( '/UserDashboard/ChangeShowColumn', { showCol: strCols }, function (res) { if (res.slt.toLowerCase() == 'true') { //alert(res.msg); window.location.reload(true); } else { alert('error' + res.msg); } } ); }); });
文件传送门:http://download.csdn.net/detail/changshenglugu/9107333
0 0
- 用原生JS产生随机长度和随机值的数组
- 产生随机的数组
- 产生随机数组的方法
- 随机排列数组的产生
- js洗牌算法实现产生随机数组
- 随机产生数组
- python产生随机数组
- C# 随机产生一定长度数组并对其排序
- js产生随机颜色
- 随机排序,产生不重复的数组
- js随机产生x到y(例如:0-10)的随机整数,存储在数组中
- 产生指定范围内指定长度的随机字符串
- 不重复固定长度随机号的产生
- 如何随机产生一个自定义长度的字符串?
- 随机产生长度为[0,20]的字符串
- Perl 随机数和随机密码的产生
- 产生随机的字符串
- 产生均匀随机排列数组
- 洛谷1373 小a和uim之大逃离(dp)
- c/c++中delete/free 指针后,设置p=NULL的好处
- perl 正则表达式
- 跨域问题解决部分解决办法
- 使用DOM解析XML的文件属性名和属性值、节点名和节点值
- 用原生JS产生随机长度和随机值的数组
- 二十岁出头的时候上,你一无所有,你拥有一切。
- webservice
- http代理,VPN代理,NAT
- STL容器stack栈
- iOS 禁止横屏
- sql server 中将由逗号“,”分割的一个字符串,转换为一个表,并应用与 in 条件
- 基础篇——队列,栈
- c#正则替换之Regex.Escape