JS学习笔记(5)--一道返回整数数组的面试题(经验之谈)

说明:

1. 微信文章里看到的,作者是马超 网易高级前端技术经理,原文在网上搜不到,微信里可以搜“为什么你的前端工作经验不值钱?”,里面写着“转载自网易实践者社区”。(妈蛋,第二天网上就有了http://bbs.ruoren.com/thread-47371512-1-1.html

2. 题目是:编写一个js函数fn,该函数有一个参数n(数字类型),其返回值是一个数组,该数组内是n个随机且不重复的整数,且整数取值范围是[2,32]。

3. 下面代码是自己写的,能实现功能,但仅仅只达到了作者的第一步“可用”的要求。

4. 后面的“健壮”:考虑输入校验,包括n的取值范围是否是1到32的整数,n是否是数组,n是否存在。

5. “可靠”:返回值,返回一个可靠的结果,如果类型可靠,返回什么数组,如果范围可靠,返回什么数组。是否抛异常。

6. “宽容”:如果n是字符串数字,是否可以运行,如果n含有小数,是否可以运行,是否有足够的注释,如果调整[2,32]的范围,是否可以快速调整,甚至不用调整?

7. “精益求精”:实际开发中,时刻留意以上原则,会给你带来周围同事的更多认可,但这种认可不包括你自己(意境好高)。

总结:

宽容是宽以待人,精益求精是严以律己。内外兼修才是高手。当你将这五个原则(可用、健壮、可靠、宽容、精益求精)变成你自己的开发习惯,你的工作经验就跟你的工作时间没有关系了。

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <title></title>
 5 </head>
 6 <body>
 7     
 8 </body>
 9 <script type="text/javascript">
10     var test = function(n){
11         var list = [];
12         for (var i = 0; i < n; i++) {
13             var rNum = Math.random()
14             rNum = Math.floor(rNum*30+2);
15             if (list.includes(rNum)) {
16                 i -= 1
17             }else{
18                 list.push(rNum)
19             }
20         }
21         return list;
22     };
23     alert(test(5))
24 </script>
25 </html>
原文地址:https://www.cnblogs.com/Jacklovely/p/6509358.html