2017-02-12 5 views
1

私は、一連の値を折れ線グラフ上にプロットしています。これらの値は、ユーザーからHTMLフォームを介した入力です。Google Charts - 特定の値を取得

例1値: 130、136、142、148、149 、159

例2つの値: 130、140、150 、175、180、200

最大の増加に先立つ値を選択できるスクリプトを持つことは可能ですか?

たとえば、興味のある値はとなります.149から159が最も価値が高い値であるためです。

また、同じ理由で2の値が150となります。

お知らせください。ここで

は、これまであなたの助けを借りて、私のコードです:

$(document).ready(function() { 

$.ajax({ 
    url : "includes/dataFile.php", 
    dataType : "JSON", 
    success: function(data) { 
     google.charts.load('current', {'packages' : ['corechart', 'line']}); 
     google.charts.setOnLoadCallback(function() { drawChart(data); }); 
     } 
}); 

function drawChart(caldata) { 

    var data = new google.visualization.DataTable(caldata); 
    data.addColumn('number', ''); 
    data.addColumn('number', ''); 
    data.addColumn('number', ''); 

    var dataArray = []; 

    $.each(caldata, function(i, obj) { 
     dataArray.push([parseFloat(obj.stage1_rate), parseInt(obj.stage1), parseInt(obj.stage1_duration)]); 
     dataArray.push([parseFloat(obj.stage2_rate), parseInt(obj.stage2), parseInt(obj.stage2_duration)]); 
     dataArray.push([parseFloat(obj.stage3_rate), parseInt(obj.stage3), parseInt(obj.stage3_duration)]); 
     dataArray.push([parseFloat(obj.stage4_rate), parseInt(obj.stage4), parseInt(obj.stage4_duration)]); 
     dataArray.push([parseFloat(obj.stage5_rate), parseInt(obj.stage5), parseInt(obj.stage5_duration)]); 
     dataArray.push([parseFloat(obj.stage6_rate), parseInt(obj.stage6), parseInt(obj.stage6_duration)]); 
     }); 

    data.addRows(dataArray); 

    var linechart_options = { 
     ..... 
    }; 

    var linechart = new google.visualization.LineChart(document.getElementById('linechart_div')); 
    linechart.draw(data, linechart_options); 

    function getMaxDelta(array) { 
      return array[array.reduce(function (r, a, i, aa) { 
       return aa[r + 1] - aa[r] < aa[i + 1] - a ? i : r; 
      }, 0)]; 
     } 
     console.log(getMaxDelta([130, 136, 142, 148, 149, 159])); 
    } 

});

答えて

1

最大デルタがArray#reduceのインデックスを保存し、実際の値と次のアイテムが保存されたペアより大きいかどうかを確認できます。

function getMaxDelta(array) { 
 
    return array[array.reduce(function (r, a, i, aa) { 
 
     return aa[r + 1] - aa[r] < aa[i + 1] - a ? i : r; 
 
    }, 0)]; 
 
} 
 

 
var array1 = [130, 136, 142, 148, 149, 159], 
 
    array2 = [130, 140, 150, 175, 180, 200]; 
 

 
console.log([array1, array2].map(getMaxDelta));
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

ありがとう - それは間違いなく動作します。 – ONEJED

+0

しかし、この行はどのようにして得られますか?console.log(getMaxDelta([130、136、142、148、149、159]));解析された変数を保持する?例:console.log(getMaxDelta([(input1)、(input2)、(input3)、(input4)、(input5)、(input6)])); – ONEJED

+0

は入力配列ですか? –

関連する問題