使用Qualtrics中的平均函数

时间:2017-10-11 02:29:10

标签: javascript function 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);

我不认为我的功能是正确的,或者我试图从函数中获取信息的方式。任何帮助都是极好的!

1 个答案:

答案 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);

});