Qualtrics- 使用 javascript 创建数组然后执行计算
Qualtrics- using javascript to create array then perform calculations
我在 Qualtrics 中进行了一项调查,我需要根据矩阵 table 的答案进行一些计算。我需要找到 "switchpoint."
答案数组将如下所示:
[0 0 0 1 1 1 1 1 1 1]
所以对于上面的数组,切换点在第 3 个和第 4 个元素之间。
我不确定执行此操作的最佳方法是什么,而且我一直在努力弄清楚 - 非常感谢任何指导。
这是我正在尝试做的事情:
我在调查流程中创建了一个嵌入式数据变量来输出选定的答案。
Var block1= [‘${q://QID664/SelectedAnswerRecode/1}’],
‘${q://QID664/SelectedAnswerRecode/2}’],
[‘${q://QID664/SelectedAnswerRecode/3}’],
[‘${q://QID664/SelectedAnswerRecode/4}’],
[‘${q://QID664/SelectedAnswerRecode/5}’],
[‘${q://QID664/SelectedAnswerRecode/6}’],
[‘${q://QID664/SelectedAnswerRecode/7}’],
[‘${q://QID664/SelectedAnswerRecode/8}’],
[‘${q://QID664/SelectedAnswerRecode/9}’],
[‘${q://QID664/SelectedAnswerRecode/10}’];
然后,解析
integers- var block1= parseInt([block1])
});
然后,我需要通过两种方式检查数组以确保它是 "valid":
- 检查
block1
数组中的值是否都等于 1
或都等于 0
- 检查是否有超过 2 个切换点
- 如果其中任何一个为真,则此块无效
然后,找到切换点并将其设置为一个值。
几件事。首先,你的数组定义是错误的……只有一组括号,没有 'smartquotes'。其次,parseInt 仅对单个字符串进行操作。应该是:
Var block1= [parseInt("${q://QID664/SelectedAnswerRecode/1}"),
parseInt("${q://QID664/SelectedAnswerRecode/2}"),
parseInt("${q://QID664/SelectedAnswerRecode/3}"),
parseInt("${q://QID664/SelectedAnswerRecode/4}"),
parseInt("${q://QID664/SelectedAnswerRecode/5}"),
parseInt("${q://QID664/SelectedAnswerRecode/6}"),
parseInt("${q://QID664/SelectedAnswerRecode/7}"),
parseInt("${q://QID664/SelectedAnswerRecode/8}"),
parseInt("${q://QID664/SelectedAnswerRecode/9}"),
parseInt("${q://QID664/SelectedAnswerRecode/10}")];
现在 block1 是一个整数数组。您可以使用 for 语句遍历它:
for(i=0;i<block1.length;i++) {
//Do something with block1[i]
}
我在 Qualtrics 中进行了一项调查,我需要根据矩阵 table 的答案进行一些计算。我需要找到 "switchpoint."
答案数组将如下所示:
[0 0 0 1 1 1 1 1 1 1]
所以对于上面的数组,切换点在第 3 个和第 4 个元素之间。
我不确定执行此操作的最佳方法是什么,而且我一直在努力弄清楚 - 非常感谢任何指导。
这是我正在尝试做的事情:
我在调查流程中创建了一个嵌入式数据变量来输出选定的答案。
Var block1= [‘${q://QID664/SelectedAnswerRecode/1}’],
‘${q://QID664/SelectedAnswerRecode/2}’],
[‘${q://QID664/SelectedAnswerRecode/3}’],
[‘${q://QID664/SelectedAnswerRecode/4}’],
[‘${q://QID664/SelectedAnswerRecode/5}’],
[‘${q://QID664/SelectedAnswerRecode/6}’],
[‘${q://QID664/SelectedAnswerRecode/7}’],
[‘${q://QID664/SelectedAnswerRecode/8}’],
[‘${q://QID664/SelectedAnswerRecode/9}’],
[‘${q://QID664/SelectedAnswerRecode/10}’];
然后,解析
integers- var block1= parseInt([block1])
});
然后,我需要通过两种方式检查数组以确保它是 "valid":
- 检查
block1
数组中的值是否都等于1
或都等于0
- 检查是否有超过 2 个切换点
- 如果其中任何一个为真,则此块无效
然后,找到切换点并将其设置为一个值。
几件事。首先,你的数组定义是错误的……只有一组括号,没有 'smartquotes'。其次,parseInt 仅对单个字符串进行操作。应该是:
Var block1= [parseInt("${q://QID664/SelectedAnswerRecode/1}"),
parseInt("${q://QID664/SelectedAnswerRecode/2}"),
parseInt("${q://QID664/SelectedAnswerRecode/3}"),
parseInt("${q://QID664/SelectedAnswerRecode/4}"),
parseInt("${q://QID664/SelectedAnswerRecode/5}"),
parseInt("${q://QID664/SelectedAnswerRecode/6}"),
parseInt("${q://QID664/SelectedAnswerRecode/7}"),
parseInt("${q://QID664/SelectedAnswerRecode/8}"),
parseInt("${q://QID664/SelectedAnswerRecode/9}"),
parseInt("${q://QID664/SelectedAnswerRecode/10}")];
现在 block1 是一个整数数组。您可以使用 for 语句遍历它:
for(i=0;i<block1.length;i++) {
//Do something with block1[i]
}