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

Javascript 如何从字符串数组中获取8个随机唯一元素?,javascript,arrays,Javascript,Arrays,我在使用一些javascript代码时遇到了一些问题。基本上,我需要做的是从16个元素的字符串数组中获取8个唯一的元素 我有这个数组 biscuits = ['a', 'b','c','d','e','f','g','h','i', 'j', 'k','l','m','n','o','p'] 我想随机得到8个元素并打印出来 我知道如何生成一个范围内的随机数。我正在努力解决的是如何生成唯一的随机数,然后从字符串数组中获取特定项。如果有人能帮助我,我将不胜感激 我不确定是否应该使用嵌套for循环

我在使用一些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--;
    }
biscuits=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p'];
newBiscuits=新数组();
项目=16项;
while(newBiscuits.length