2016-12-08 12 views
0

Rechartsライブラリを使って株式市場データをプロットしています。しかし、単純な折れ線グラフは、私は、特定のティッカーのための各オブジェクトは、そのティッカーのために1日を表し、このオブジェクトから配列への在庫データを解析する方法

Object 
AAPL:Array[4] 
0:Object 
adjClose:53.509768 
close:411.23 
date:"2012-01-02T18:30:00.000Z" 
high:412.499989 
low:408.999989 
open:409.399998 
symbol:"AAPL" 
volume:75555200 
__proto__:Object 
1:Object 
2:Object 
3:Object 
length:4 
__proto__:Array[0] 
GOOGL:Array[4] 
TSLA:Array[4] 

のように見えるデータを持っているので、

{name: 'Page A', uv: 4000, pv: 2400, amt: 2400} 

のような非常に厳格なデータ構造を必要とします。私はまだRechartsがデータに私もこの方法を望むようにプロットすることを全くわからないが、それは最も可能性の高い選択肢と思われるこの

data=[ 
    {date: 'Jan 12, 2012', AAPL: {open: 12, close: 15}, TSLA: {open: 15, close: 21}, GOOGL: {open: 125, close: 21}}, 
    {date: 'Jan 13, 2012', AAPL: {open: 15, close: 12}, TSLA: {open: 21, close: 155}, GOOGL: {open: 21, close: 25}} 
    ... 
    ... 
    ... 
]; 

のようなデータ構造にそれから行く必要があるように思えます。

だけ明確にするために、私はそれをプロットしたい方法は、同じチャート要素の各ティッカーのための個別の線グラフがある

答えて

1
あなたは、各シンボルを反復処理し、次いで、単純なループを使用して、データ・オブジェクトを構築することができます

サブ・ループを各シンボルに挿入します。これは、各シンボルが同じ日付の同一配列を含んでいると仮定します。

// result object 
let result = []; 

// get the ticker list from the object keys 
const tickers = Object.keys(yourDataObject); 

// get number of days for first ticker by looking at it's array length 
const days = yourDataObject[tickers[0]].length; 

// iterate through the days to parse the data 
for (let i = 0; i < days; i++) { 
    // initiate row data with date of the first symbol 
    let rowData = { 
    date: new Date(yourDataObject[tickers[0]][i]).toLocaleDateString(), 
    } 
    // iterate through the tickers for that day 
    symbols.forEach(symbol => { 
    const tickerDayData = yourDataObject[symbol][i]; 
    rowData[ticker] = { 
     open: ~~tickerDayData.open, // using ~~ to get the int value, you could round if you'd prefer 
     close: ~~tickerDayData.close, 
    }; 
    }); 
    // add to main result array 
    result.push(rowData); 
} 

実際のデータを提供した場合は、テスト用にコンソールでこれを実行できます。

+0

ねえ、それは魅力的でした。ありがとう! 実際のデータを提供しないと申し訳ありません。私が書いているアプリのために、そのデータをAPIから取得したので、元のデータをここに置く方法がわかりませんでした。 –

+0

すばらしい、聞いてうれしい。これがJSの理解を深めるのに役立つことを願っています。 –

関連する問題