今天看到一篇文章,主要讲的是为什么你的工作经验不值钱?他里面主要是通过分析一道简单的题目,从五个原则(可用、健壮、可靠、宽容、精益求精)上讲,你的经验值有多少。看了题目我就自己做了一下。题目和思考如下:
编写一个javscript函数 fn,该函数有一个参数 n(数字类型),其返回值是一个数组,该数组内是 n 个随机且不重复的整数,且整数取值范围是 [2, 32]。
题目分析: 1、主要功能:根据参数n返回n项不重复的数组 2、其他考虑:n的范围和类型控制 3、解题思路: (1)n项随机不重复的数组:先生成一个[2,3...32]的数组,然后随机排序。再根据数组的slice取出相应的项数。 (2)n范围和类型:主要通过判断n typeof 是否等于number类型,就可以排除掉不少number类型和不传值的情况了。另外,数组是要求n个不重复的且值的范围在[2,32],所以这里的n值必须小于31,当然n值要大于0啦。
<!-- 方法fn --> function fn(n){ var minVal = 2, maxVal = 32; // n值检验: n的范围和类型 if (checkVal(n)) { var sortArray = gnrAndSorArr(minVal, maxVal,n); return sortArray; }else{ return [] } } <!-- 检验方法 --> function checkVal(n){ if (typeof n !== 'number') { alert('请传入数字!'); return false; } if (n < 1 || n > 31) { // 整数取值范围是 [2, 32],且不重复,则n的取值只能1-31 alert('请输入1-31范围的n值'); return false; } if (!/^\d+$/.test(n)){ alert("不是整数"); return false; } return true; } <!-- 生成和排序数组的方法 --> function gnrAndSorArr(minVal, maxVal,n){ var arr = new Array(), reqArr = []; for (var index = minVal; index <= maxVal; index++) { arr.push(index); } arr.sort(function () { return 0.5 - Math.random(); }); reqArr = arr.slice(0, n); return reqArr; }文章说,现在假设你的工作时间为 y 年,经验系数默认为 1,即工作经验是:Y = 1 * y。从现在开始,以下的错误,你要是遇到了,请自行调整经验系数。假设我满1年工作经验,乘以y,连1都没有o(╥﹏╥)o,我的代码估计只剩下可用这个层面了。。
不过,有些考虑是要分场合和需求。在写的时候,我会想用户输入的n不同类型值,相对应不同的提示,或者允许n的最大错误范围是到哪里?
最后,附上文章的链接:https://mp.weixin.qq.com/s/Rw_D3dSVfU3vB-5izneX4g
转载于:https://www.cnblogs.com/MJyaaatou/p/9540587.html