0

1年生と2年生の平均「レベル」を取得しようとしています. この時点で回答をまとめていますが、「1年生」または「2年生」に一致する項目のみの回答の総数を取得する方法がわかりません。len = gdata.length を使用して、配列内のアイテムの総数を数えましたが、一致する回答のみを数え直す必要があります。

var len = gdata.length;
    var sum = 0;
    var sumF = 0;
    var sumSo = 0;
    var average = 0;
    var avgF = 0;
    var avgSo = 0;

$.each(gdata, function (i, gdata){

            var date = gdata.Timestamp;
    var level = gdata.level;
    var year = gdata.year;
            sum+=parseInt(level) || 0;
            average = sum/len;


    switch(year) {
      case 'Freshman':
        sumF+=parseInt(level) || 0;
        console.log(sumF);
        avgF = sumF/len;
        break;

      case 'Sophomore':
        sumSo+=parseInt(level) || 0;
        console.log(sumSo);
        avgSo = sumSo/len;
        break;

      default:
        console.log("");
    }

});
    console.log(sum);
    console.log(average);
};
4

1 に答える 1

2

jQuery.grep を使用して、最初に配列をフィルタリングできます。 ここにリンクの説明を入力

var fsData = $.grep(gdata, function (n, i) {
    return n.year == "Freshman" || n.year == "Sophomore";
});

その場合、fsData.length は 1 年生と 2 年生の合計数になります。次に、各ステートメントを次のように調整できます。

$.each(fsData, function (i, data) {
    // blah blah
});

編集:

1 年生と 2 年生を分けたい場合は、次のようにします。

var freshman = [];
var sophomores = [];
var freshman_and_sophomores = [];

$.each(gdata, function (i, v) {
    if (v.year == "Freshman" || v.year == "Sophomore") {
        freshman_and_sophomores.push(v);
        if (v.year == "Freshman") freshman.push(v);
        if (v.year == "Sophomore") sophomores.push(v);
    }
});

これで、freshman.length と sophomores.length を取得できます。次に、次の $.each で freshman_and_sophomores を使用します。

于 2013-08-24T19:30:12.013 に答える