如何从 Javascript 中的数组创建唯一随机数

How to create an unique and random number from an array in Javascript

我是 JS 的超级初学者。我尝试创建一种通过单击按钮生成随机唯一数字(0 到 10 之间)的方法。 我希望这个数字出现后从数组中删除。

谢谢

const btn = document.getElementById("btn");

const showNumber = document.querySelector("h2");


let allNumbers = [];
for (var i =1; i <= 10; i++){  
    allNumbers.push(i);
}


const randomNumber = btn.addEventListener('click',()=> {
  let n = Math.floor(Math.random()*allNumbers.length+1);
  showNumber.innerText = n;

 });



 if(allNumbers.indexOf(n+1) === n) {  
    allNumbers.splice(n-1,1);
};

我假设您希望按钮能够多次工作,因此您必须能够从数组中删除一个数字,无论它位于何处,因为它们的位置会随着号码被删除。因此你有几个问题:

  • select删除随机数的代码可能会选择一个已经被删除的数字。
  • 代码假定数字位于特定位置,第一次删除后可能不正确。
  • 从数组中删除元素的代码当前位于单击按钮时调用的事件侦听器之外;您必须将它移到函数内部才能正常工作。

为了避免第一个问题,不是选择一个从 1 到 10 的随机数来移除,而是 select 数组中的一个随机位置:

const index = Math.floor(Math.random() * allNumbers.length);
const n = allNumbers[index];

然后您可以通过索引删除该元素:

allNumbers.splice(index, 1);

另请注意,randomNumber 没有用,因为 addEventListener() 只会 returns undefined.