JavaScript:根据给定的范围和集合生成唯一的“x”数字

时间:2021-01-28 18:54:01

标签: javascript random

我正在制作一个函数,它将根据给定的范围和集合生成一个唯一的“x”数字。

示例

  • randomizer({ range: 50, set: 5 }) = [8, 16, 32, 40, 48]
  • randomizer({ range: 15, set: 3 }) = [4, 11, 15]
  • randomizer() = [2, 4, 5, 3, 1]

      function randomizer(data) {
          const dataRange = data && data.range
              ? data.range
              : 5;
          const dataSet = data && data.set
              ? data.set
              : 5;
    
          if (dataRange < dataSet) {
              console.log('Range cannot be lower than the Set!');
              return;
          }
    
          const randomizerRange = [];
          for (let r = 1; r <= dataRange; r++) {
              randomizerRange.push(r);
          }
    
          const randomizerSet = [];
          let randomNumber;
          for (let s = 1; s <= dataSet; s++) {
              randomNumber = Math.floor((Math.random() * (dataRange - s)) + 1);
              if (randomizerSet.includes(randomizerRange[randomNumber])) {
    
                  /*
                  make sure that the next number on randomizerSet is unique
                  this loop is crashing the browser ?
                  */
                  let isUnique = false;
                  do {
                      randomNumber = Math.floor((Math.random() * (dataRange - s)) + 1);
                      if (!randomizerSet.includes(randomizerRange[randomNumber])) {
                          isUnique = true;
                      }
                  } while (!isUnique);
    
              }
              randomizerSet.push(randomizerRange[randomNumber]);
          }
    
          return randomizerSet;
      }

我的问题是在 while 循环上,浏览器崩溃了 ?
我需要帮助来确保返回的数组永远不会有重复的值?谢谢。

0 个答案:

没有答案
相关问题