如何从字符串数组中获得8个随机唯一元素

How to get 8 random unique elements from a string array?

本文关键字:8个 随机 唯一 元素 字符串 数组      更新时间:2024-05-22

我在处理一些javascript代码时遇到了一些问题。本质上,我需要做的是从一个16元素的字符串数组中获得8个唯一的元素。

我有这个阵列

 biscuits = ['a', 'b','c','d','e','f','g','h','i', 'j', 'k','l','m','n','o','p']

我想随机得到其中的8个元素并打印出来。

我知道如何生成一个范围内的随机数。我正在努力解决的问题是如何生成唯一的随机数,然后从字符串数组中获取特定的项。如果有人能帮忙,我将不胜感激。

我不确定是应该使用嵌套的for循环,还是检查值是否已经在数组中?我知道应该这样做,但由于某种原因我不能这样做。

您可以复制您的数组,并在拾取时移除生成的值。所以,下次你随机选择一个元素时,你就无法再选择同一个了。这要求您的数组仅由唯一元素组成(不包含重复元素)。

下面将为您提供一系列独特的新饼干,您可以使用它们做任何您想做的事情:

biscuits = ['a', 'b','c','d','e','f','g','h','i', 'j', 'k','l','m','n','o','p'];
newBiscuits=new Array();
items=16;
while(newBiscuits.length<8) {
    newBiscuits.push(biscuits.splice(parseInt(Math.random()*items), 1));
    items--;
    }

有几种方法可以做到这一点。单向:

  • 复制数组
  • 生成随机数
  • 从数组中删除所选元素
  • 根据新的数组长度生成新的数字。。。我想你明白了吧