Javascript:生成和存储无需替换的随机绘图

Javascript:生成和存储无需替换的随机绘图,javascript,arrays,random,replace,qualtrics,Javascript,Arrays,Random,Replace,Qualtrics,我试图使用Javascript创建一个数组,从数组中随机抽取两个唯一的值,然后将抽取的值分配给一个HTML表。我的方法是创建一个数组,随机抽取一个数组,创建一个没有抽取值的新数组,然后从新数组中随机抽取一个数组,作为抽取两个随机抽取而不替换的方法 我提供了一个我为实现这一目标所做的最简单的例子,但它不起作用。我希望分配给HTML表的值最终是来自foo数组的两个唯一值(例如“a”、“b”)。 这是否不起作用,因为下面的value==bar\u a不会删除分配给bar\u a数组的值,因为bar\u

我试图使用Javascript创建一个数组,从数组中随机抽取两个唯一的值,然后将抽取的值分配给一个HTML表。我的方法是创建一个数组,随机抽取一个数组,创建一个没有抽取值的新数组,然后从新数组中随机抽取一个数组,作为抽取两个随机抽取而不替换的方法

我提供了一个我为实现这一目标所做的最简单的例子,但它不起作用。我希望分配给HTML表的值最终是来自foo数组的两个唯一值(例如“a”、“b”)。 这是否不起作用,因为下面的value==bar\u a不会删除分配给bar\u a数组的值,因为bar\u a是数组而不是数组的值

虽然在没有替换的情况下解决了绘图问题,但它没有提供使用字符串的示例,也没有解释如何保存这两个数字,也不清楚它们为什么使用
splice()
而不是
filter()


您的筛选条件逻辑是反向的。您需要的值不等于
bar\u a

您还需要将
array.filter
更改为
foo.filter

//定义包含随机分配给A或B的值集的数组
变量foo=[“a”、“b”、“c”、“d”];
//初始化变量以保存A和B的值
var bar_a=[“”];
var bar_b=[“”];
//从foo中随机抽取,保存为
bar_a=foo[Math.floor(Math.random()*foo.length)];
//从数组中删除绘制的值,创建新数组
var foo_filtered=foo.filter(函数(值、索引、arr){
返回值!==bar\u a;
//^^^不相等
});
//从筛选的foo_中随机抽取,保存为B
bar_b=foo_filtered[Math.floor(Math.random()*foo_filtered.length)];
//将属性和值分配给HTML表中的占位符(a1、b1)
document.getElementById(“a1”).innerHTML=bar\u a;
document.getElementById(“b1”).innerHTML=bar\b

A:B:
链接答案使用的是
splice
,因为它更改了原始数组,这正是您想要的,因为您不需要替换。在这里看一看:array.filter捕捉得很好。这项工作,我接受的答案,但有一个折衷做这与使用拼接?使用splice会是什么样子?Javascript新手,在工作中通过将东西一起废弃来学习。这取决于您是否需要再次使用,以及是否需要原始数组完好无损。有很多方法可以简化,但我只专注于让你所拥有的发挥作用
    // Define array containing the set of values we'll randomly assign to A or B
    var foo = ["a", "b", "c", "d"];

    // Initialize variables to hold the value for A and B
    var bar_a=  [""];
    var bar_b=  [""];

    // Randomly draw from foo, save for A
    bar_a =foo[Math.floor(Math.random()*foo.length)];

    // Remove the drawn value from the array, create new array
    var foo_filtered = array.filter(function(value, index, arr){
        return value == bar_a;
        });

    // Randomly draw from foo_filtered, save for B
    bar_b = foo_filtered[Math.floor(Math.random()*foo_filtered.length)];

    // Assign attributes and values to their placeholders (a1, b1) in a HTML table
     document.getElementById("a1").innerHTML = bar_a;
     document.getElementById("b1").innerHTML = bar_b;