2016-07-12 4 views
0

Ich versuche herauszufinden, wie kumulative Werte aus einer Datentabelle abgerufen werden, in die ein Benutzer Werte eingibt. Ich habe alle Daten in einem Array gespeichert, das darstellt Die Rohdaten, und ich versuche, ein Array zu erhöhen, das eine Kopie des Arrays ist, das die Rohdaten darstellt, um die kumulativen Daten für das Diagramm zu erhalten. Ich versuche dies zu tun, indem ich jedes Wertobjekt des Arrays auf die Werte jedes Index des Rohdatenarrays bis zum aktuellen Index hochsetze. Ich mache das durch eine Schleife, aber es scheint nicht zu funktionieren. Mein Code für die Funktion ist hier:Wert des Array-Objekts durch Verwendung der Werte der Objekte eines anderen Arrays erhöhen

function generateChartData() { 
    var rawData = []; 
    var chartData = []; 
    jQuery('.data-row').each(function() { 
     var date = jQuery(this).find('.data-category').val(); 
     var value = jQuery(this).find('.data-value').val(); 
     var value2 = jQuery(this).find('.data-value2').val(); 
     if (date != '') { 
      rawData.push({ 
       date: date, 
       value: value, 
       value2: value2 

      }); 
     } 
    }); 
    for (var i = 0; i < rawData.length; i++) 
    { 
     chartData[date][i] = rawData[date][i]; 
     for(var j = i; j >= 0; j--) 
     { 
      chartData[i][value]+=rawData[j][value]; 
      chartData[i][value]+=rawData[j][value2]; 
     } 
    } 

    return chartData; 
} 

Here is the jsfiddle

+0

Sie setzen in der 'for' -Schleife kein' Datum'. Und da es kein 'chartData [date]' gibt, können Sie 'chartData [date] [i]' nicht setzen. – Barmar

+0

Sollte 'rawData [Datum] [i]' nicht 'rawData [i] .date' sein? Sie scheinen über Array und Objekte verwirrt zu sein. – Barmar

Antwort

1

Sie sind nicht richtig Array zugreifen und Objektelemente. Und Sie können einfach eine einfache Variable verwenden, um die laufende Summe zu halten.

var valueSum = 0; 
var value2Sum = 0; 
for (var i = 0; i < rawData.length; i++) { 
    rd = rawData[i]; 
    valueSum += rd.value; 
    value2Sum += rd.value2; 
    chartData.push({ 
     date: rd.date, 
     value: valueSum, 
     value2: value2Sum 
    }); 
} 
Verwandte Themen