Как исключить повторяющиеся буквы из массиве в JS?

Dima83

Новичок
Создаю массив, который должен заполняться автоматически случайными буквами (без повторений). Буквы берутся из другого массива. При генерации у меня происходит заполнение. Однако все равно иногда проскальзывают дубли букв, пример на картинке.
1597
Как это исправить, чтобы не было повторений?
Вот код:
HTML:
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">

  <script>
  var bukvy = ['А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ж', 'З',
  'И', 'Й',
  'К', 'Л', 'М', 'Н', 'О', 'П', 'Р',
  'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я'];
  var slovo = Array();
  var word1='лес';

  slovo = word1.split("");
  var isUniq;

     function showInfo()
     {
      document.getElementById("debug").value = "";
      document.getElementById("debug2").value = "";
      for (var i = slovo.length; i < 16; i++)
      {
         
             do
              {
             
                isUniq = true;
                word1 = bukvy[Math.trunc(Math.random()*bukvy.length)];
               
                for (var j=0; j<=i-2;j++)
                {
                 
                  if(slovo[j]==word1)
                  {
                    isUniq = false;
                  }
                }
            }while(!isUniq)
            slovo[i]=word1;
      }
      document.getElementById("debug").value = "";
      for (var j = 0; j < 16; j++)
      {
        document.getElementById("debug").value += slovo[j]+"\n";
      }
      console.log(slovo);
     }
  </script>
</head>
<body onload="showInfo()">
<textarea id="debug" rows="20" cols="45"></textarea>
<textarea id="debug2" rows="20" cols="45"></textarea>
</body>
</html>
 

fixxxer

К.О.
Партнер клуба
Вот, разберись, как работает )))

JavaScript:
const letters = (r => Array.from({length: r[1] - r[0] + 1}).map((_, i) => String.fromCharCode(r[0] + i)))(['А', 'Я'].map(s => s.charCodeAt(0)))
const genRandom = len => letters.map(value => [value, Math.random()]).sort((a, b) => a[1] - b[1]).map(([v]) => v).slice(0, len)
console.log(genRandom(10))
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Вот, разберись, как работает )))

JavaScript:
const letters = (r => Array.from({length: r[1] - r[0] + 1}).map((_, i) => String.fromCharCode(r[0] + i)))(['А', 'Я'].map(s => s.charCodeAt(0)))
const genRandom = len => letters.map(value => [value, Math.random()]).sort((a, b) => a[1] - b[1]).map(([v]) => v).slice(0, len)
console.log(genRandom(10))
Што-то на Скале
 
  • Like
Реакции: AmdY
Сверху