在 Qualtrics 中使用平均函数

using an average function in Qualtrics

我正在尝试编写一个函数来计算嵌入数据的平均值。我通过管道输入字段,解析它们(它们是带小数的数字,所以我可以使用 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);

});