2016-11-21 64 views
0

我正在使用此比较示例:http://www.highcharts.com/stock/demo/compare。 这个例子很棒。它显示了开始数据(索引0)和当前数据之间的差异。例如,我有这样的数据:Highstock比较如何比较当前数据点与以前的数据点

[ 
    [147893849384,20] (+0%) 
    [147893849385,40] (+200%) 
    [147893849386,400] (+2000%) 
    [147893849386,10] (-50%) 
] 

我想修改比较以前的数据而不是开始的数据。

[ 
    [147893849384,20] (+0%) 
    [147893849385,40] (+200%) 
    [147893849386,400] (+1000%) 
    [147893849386,100] (-75%) 
] 

我该怎么做?请帮忙〜

谢谢。

+2

比较作为你的第一个例子是行不通的。它计算与第一个点相关的第一个和当前点之间的差值。 (curr - 第一)/第一https://jsfiddle.net/kbcdkmok/你的例子确实curr /第一。所以如果你想让比较工作像Highstock一样,但它应该采用前一个点,而不是第一个,那么你需要自己进行计算。在这种情况下,@Aliester提供的计算是正确的。 – morganfree

回答

1

好吧,从提供的数据来看,它只是比较每个数组的第二个索引。所以,你可以做这样的事情:

var data = [ 
 
    [147893849384,20], 
 
    [147893849385,40], 
 
    [147893849386,400], 
 
    [147893849386,10] 
 
]; 
 

 
for(var i = 0; i < data.length; ++i) { 
 
    // skip first item 
 
    if(i === 0) { 
 
    continue; 
 
    } 
 
    
 
    let prevDataPoint = data[i - 1][1]; 
 
    let currentDataPoint = data[i][1]; 
 
    
 
    // Multiply by 100 to get value as percentage. 
 
    let percentageDifference = ((currentDataPoint - prevDataPoint)/prevDataPoint) * 100; 
 
    
 
    console.log(i + " Percentage Difference: " + percentageDifference + "%"); 
 
}

+0

谢谢Aliester,但这不是我想要做的。再次感谢〜 – TimLee

+0

@TimLee你会介意我的答案偏离你想做的事吗? – Adrian