如何在高股票中绘制图形之前加入两个系列



我有两个以下格式的javascript数据数组,

series one: [{date:20170220,price:25},{date:20170221,price:25},......{date:20170322,price:25},{date:20170323,price:55}]
series two: [{date:20170220,price:30},{date:20170221,price:28},......{date:20170322,price:24},{date:20170323,price:23}]

两个值是 {日期,价格}。我们不能保证两个系列中特定日期的数据可用。我想创建第三个系列,其中包括每天的average价格。有没有办法在highstocks获得第三个系列.欣赏任何JavaScript基础解决方案。

我认为这个片段将通过您想要的内容来解决您。

只需循环访问 2 个数组并创建第三个数组。我留下了price密钥,因为您的要求未定义。

var s1 = [{date:20170220, price: 25},{date: 20170221, price: 25},{date: 20170322, price: 25},{date: 20170325,price: 55}];
var s2 = [{date: 20170220,price: 30},{date: 20170221,price: 28},{date: 20170323, price: 24},{date: 20170324, price: 23}];
var sortHelper = function(a, b){return a.date - b.date}
//sorting them for sanity
s1.sort(sortHelper);
s2.sort(sortHelper);
var s1Index = 0, s2Index = 0, s3 = [];
while(s1Index < s1.length || s2Index < s2.length){
  if(s1Index >= s1.length){ //for extreme conditions
    for(;s2Index < s2.length; s2Index++){
      s3.push({
        date: s2[s2Index].date
      });  
    }
    break;
  }
  if(s2Index >= s2.length){ //for extreme conditions
    for(;s1Index < s1.length; s1Index++){
      s3.push({
        date: s1[s1Index].date
      });  
    }
    break;
  }
  if(s1[s1Index].date === s2[s2Index].date){
    s3.push({
      date: s1[s1Index].date,
      price: (s1[s1Index].price + s2[s2Index].price) / 2
    });
    s1Index++;
    s2Index++;
  }else if(s1[s1Index].date < s2[s2Index].date){
    s3.push({
      date: s1[s1Index].date
    });
    s1Index++;
  }else if(s1[s1Index].date > s2[s2Index].date){
    s3.push({
      date: s2[s2Index].date
    });
    s2Index++;
  }
}
console.log(s3);

最新更新