我试图编写一个函数来计算嵌入数据的平均值。我将字段输入,解析它们(它们是带小数的数字,所以我可以使用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);
我不认为我的功能是正确的,或者我试图从函数中获取信息的方式。任何帮助都是极好的!
答案 0 :(得分:0)
这里有几个问题,首先,您不需要在定义变量后重新初始化变量。其次,你永远不会调用你的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);
});