我在折线图上绘制了一系列值。这些值是用户通过HTML表单输入的。

示例1的值:
130、136、142、148、149、159。

示例2的值:
130、140、150、175、180、200。

是否有可能选择最大增长值之前的脚本?

因此,例如1-利息价值将是149-因为从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]));
    }


});

最佳答案

您可以使用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; }

09-30 19:37