我正在尝试编写一个函数来计算嵌入数据的平均值。我通过管道输入字段,解析它们(它们是带小数的数字,所以我可以使用 parseInt)。然后我需要检查是否有任何值为零,因此我对其进行过滤。然后我想对剩下的数据点进行平均。
Qualtrics.SurveyEngine.addOnload(function()
{
var a = "${e://Fields/a}"
var b = "${e://Fields/b}"
var c = "${e://Fields/c}"
var a= parseFloat(a)
var b= parseFloat(b)
var c= parseFloat(c)
var all_values;
var all_values= [a, b, c];
function isnonzero(value) {
return value != 0;
}
var filter_it;
var filter_it = all_values.filter(isnonzero);
function avg(filter_it){
var sum = 0;
for (var i = 0; i < filter_it.length; i++) {
sum += parseFloat(arr[i])
}
return average= sum / i;
}
Qualtrics.SurveyEngine.setEmbeddedData("total",average);
我认为我的函数不正确,或者我尝试从函数中获取信息的方式不正确。任何帮助都是极好的!
最佳答案
这里有几个问题,首先,定义变量后不需要重新初始化它。其次,你永远不会调用 avg() 函数。第三,不能在 for 循环之外使用 i 的值。您也永远不会在 avg() 函数中定义 arr 。并且您没有在 avg 函数之外定义平均值请尝试以下操作:
Qualtrics.SurveyEngine.addOnload(function()
{
var a = "${e://Fields/a}"
var b = "${e://Fields/b}"
var c = "${e://Fields/c}"
a= parseFloat(a)
b= parseFloat(b)
c= parseFloat(c)
var all_values= [a, b, c];
function isnonzero(value) {
return value != 0;
}
var filter_it;
filter_it = all_values.filter(isnonzero);
function avg(filter_it){
var sum = 0;
for (var i = 0; i < filter_it.length; i++) {
sum += parseFloat(filter_it[i])
}
return sum / filter_it.length;
}
var average = avg(filter_it);
Qualtrics.SurveyEngine.setEmbeddedData("total",average);
});
关于javascript - 在 Qualtrics 中使用平均函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46678826/