Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以混合顺序生成多个组合的字符串列表_Javascript_Html_Combinations_Permutation_Jspsych - Fatal编程技术网

Javascript 以混合顺序生成多个组合的字符串列表

Javascript 以混合顺序生成多个组合的字符串列表,javascript,html,combinations,permutation,jspsych,Javascript,Html,Combinations,Permutation,Jspsych,我正在用jsPsych为一位教授做一个认知实验,其中的刺激是大约200个逻辑陈述,形式为T∧ F∨ T具有4种不同的间距类型。我需要找到一种方法来生成三个真值、两个逻辑运算符和四个空格类型的每一个组合,以正确的顺序编写,而不必手动输入(希望如此) 具体内容如下: 间距类型(其中--表示空间): 1) T∧T∨T即没有空间,2)T∧--T∨T,3)T∧T--∨T,4)T∧--T--∨T 操作员: 1) ∧ ∧,2)∨ ∨,3)∧ ∨,4)∨ ∧ 真值: T和F的所有3个组合(共有8个)。例如:TT

我正在用jsPsych为一位教授做一个认知实验,其中的刺激是大约200个逻辑陈述,形式为T∧ F∨ T具有4种不同的间距类型。我需要找到一种方法来生成三个真值、两个逻辑运算符和四个空格类型的每一个组合,以正确的顺序编写,而不必手动输入(希望如此)

具体内容如下:

间距类型(其中--表示空间):

1) T∧T∨T即没有空间,2)T∧--T∨T,3)T∧T--∨T,4)T∧--T--∨T

操作员:

1) ∧ ∧,2)∨ ∨,3)∧ ∨,4)∨ ∧

真值:

T和F的所有3个组合(共有8个)。例如:TTTTTFFTFFFF

因此,我需要检查这三种东西的所有组合,将它们组合成字符串(用html编写),并生成一个包含所有字符串的列表或数组(大约有200个)。我是cs的新手,所以对于这个问题的任何帮助都是非常感谢的,对我来说,移动的部分太多了

请注意,感谢一位评论者指出我没有包括我尝试过的东西

我已经尝试使用3-5嵌套for循环了一段时间。我最初设置了一个大小为7的数组(因为这是字符串的最长长度),并使用for循环填充数组的空格。我使用这条路线几乎完全不成功。这看起来很有希望,也许我可以让它工作,但它也很不雅观,很长,我现在想知道是否有一个更直接的方法来做到这一点。再说一次,由于我是新手,可能有一些资源我不知道

谢谢

为了快点,我会用


感谢前面的答案,让我看到了js组合数学。结果表明,您发布的代码并不完全有效(因为每个数组都对应于位置)。但这帮我弄明白了

Combinatorics.cartesianProduct(
            ['T', 'F'],
            ['∧', '∨'],
            ['T', 'F'],
            ['∧', '∨'],
            ['T', 'F']
    ).toArray();
然后,在使用简单循环生成该列表之后,需要添加每种间距类型的空格。

jsPsych在这种情况下使用了

文档中的示例如下:

var factors = {
    stimulus: ['a.jpg', 'b.jpg'],
    ms_delay: [100, 200]
}

var full_design = jsPsych.randomization.factorial(factors, 1);

/*
output:
full_design = [
    {stimulus: 'a.jpg', ms_delay: 200},
    {stimulus: 'b.jpg', ms_delay: 200},
    {stimulus: 'b.jpg', ms_delay: 100},
    {stimulus: 'a.jpg', ms_delay: 100},
]
*/

您可以根据自己的问题来调整它,不过随后需要对输出进行一些争论,以便将其转换为所需的确切格式。

Hi Nic3500。这实际上是我关于stackoverflow的第一个问题。事实上,我已经尝试这么做了一段时间了,我不知道我应该包括所有我尝试过的东西,比如使用数组的复杂的五元组嵌套循环等等。所以你的评论对我今后提出问题很有帮助。谢谢
var factors = {
    stimulus: ['a.jpg', 'b.jpg'],
    ms_delay: [100, 200]
}

var full_design = jsPsych.randomization.factorial(factors, 1);

/*
output:
full_design = [
    {stimulus: 'a.jpg', ms_delay: 200},
    {stimulus: 'b.jpg', ms_delay: 200},
    {stimulus: 'b.jpg', ms_delay: 100},
    {stimulus: 'a.jpg', ms_delay: 100},
]
*/