牛客JS题(八)无重复数组

注释很详细,直接上代码
涉及知识点:

  1. set
  2. 合法性判断
  3. 扩展运算符
  4. 随机函数封装

题干:

我的答案

html 复制代码
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
  </head>
  <body>
    <script>

      /**
       * 永远不要相信调用你写的函数的人,尤其的这种作为循环条件的,没判断好就有可能进入死循环
       * 所以开局先排除不合理的情况,
       * 已知set自带去重属性,所以我们不需要考虑去重判断,
       * 随机数生成函数比较常见,咱封装一下调用
       * 最后注意需要返回的是数组而不是set,这里使用扩展运算符展开set作为数组再返回
       */
       const getNumberForRange=((start,end)=>{
           //左闭右开
           return Math.floor(Math.random()*(end-start)+start);
       })

       const _getUniqueNums = (start, end, n) => {
         // 补全代码
         if(n<0||end-start+1<n){
           console.log('无效情况');
           return;
         }

         let nums=new Set();
         while(nums.size<n){
           nums.add(getNumberForRange(start,end+1));
         }

         // 这里用数组的扩展运算符将set转为数组
         return [...nums];
       };
       console.log(_getUniqueNums(1, 4, 5));//无效情况
       console.log(_getUniqueNums(1, 10, -5));//无效情况
       console.log(_getUniqueNums(1, 10, 10));//正常返回

    </script>
  </body>
</html>

博客更新不是很及时,需要看后面内容的可以看看我的gitee仓库

牛客JS题Gitee仓库

相关推荐
子兮曰1 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰1 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万1 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝1 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋1 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁1 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
李少兄1 天前
JavaScript 隐式全局变量解析
javascript
汉堡大王95271 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大1 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师1 天前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端