据说是可以看出经验值的题目

今天看到一篇文章,主要讲的是为什么你的工作经验不值钱?他里面主要是通过分析一道简单的题目,从五个原则(可用、健壮、可靠、宽容、精益求精)上讲,你的经验值有多少。看了题目我就自己做了一下。题目和思考如下:

编写一个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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值