2016-07-12 6 views
0

ユーザーが値を入力するデータテーブルから累積値を取得する方法を理解しようとしています。すべてのデータを、 生データ、およびグラフの累積データを取得するために生データを表す配列のコピーである配列をインクリメントしようとしています。現在のインデックスまでの生データ配列の各インデックスの値に、配列の各値オブジェクトをインクリメントすることによって、これを実行しようとしています。私はループでこれをやっていますが、うまく動作していないようです。機能のための私のコードはここにある:他の配列のオブジェクトの値を使って配列オブジェクトの値を増やす

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

'for'ループに' date'を設定していません。 'chartData [date]'は設定されていないので、 'chartData [date] [i]'を設定することはできません。 – Barmar

+0

'rawData [date] [i]'は 'rawData [i] .date'でなければなりませんか?あなたは配列とオブジェクトについて混乱しているようです。 – Barmar

答えて

1

あなたが適切に配列とオブジェクトの要素にアクセスしていません。また、単純な変数を使用して実行中の合計を保持することもできます。

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 
    }); 
} 
関連する問題