2017-03-23 1 views
0

ハイストックにグラフを描画する前に2つのシリーズに参加するにはどうすればいいですか?私は、次の形式で2つの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の価格を含む第3シリーズを作成したいと思います。 highstocksに3番目のシリーズを取得する方法はありますか? javascriptの基本的なソリューションを歓迎します。

+0

あなたは日付が不足して何をしたいですか?平均かそれともそのまま維持するか? –

+0

の日付がない場合は、第3シリーズの平均値を未定義にします – Channa

+0

この{20170220,25}のデータ構造は何ですか?オブジェクトではないでしょうか? –

答えて

1

私はこのスニペットがあなたの望むものを通してあなたに対処すると思います。

2つの配列をループして3番目の配列を作成するだけです。私は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);

関連する問題