2017-08-29 15 views
0

私は自分のグラフの月ごとのデータ配列を作成しようとしています。毎月の売り上げと購買のすべての値を組み合わせる月のデータセットを動的に

私の予想される結果を得るのを助けることができる人は本当に役に立ちます。私はあなたが使用することができ

http://jsfiddle.net/qjsgy6a6/2/

var mainData = [ 
    { 
    "date": "2017-01-03", 
    "month": "JAN", 
    "sales": "200", 
    "purchase": "1000" 
    }, 
    { 
    "date": "2017-01-18", 
    "month": "JAN", 
    "sales": "800", 
    "purchase": "2500" 
    }, 
    { 
    "date": "2017-01-22", 
    "month": "JAN", 
    "sales": "400", 
    "purchase": "2100" 
    }, 
    { 
    "date": "2017-02-20", 
    "month": "FEB", 
    "sales": "40", 
    "purchase": "90" 
    }, 
    { 
    "date": "2017-02-28", 
    "month": "FEB", 
    "sales": "970", 
    "purchase": "2100" 
    }, 
    { 
    "date": "2017-02-29", 
    "month": "FEB", 
    "sales": "3300", 
    "purchase": "2900" 
    }, 
    { 
    "date": "2017-03-20", 
    "month": "MAR", 
    "sales": "600", 
    "purchase": "900" 
    } 
] 


// Expected Output - how can I achieve this 

{ 
    "data": [ 
    { 
     "data": [ 
     { 
      "event": "sales", 
      "inventory": [ 
      { 
       "value": "200" //Jan 
      }, 
      { 
       "value": "40" //Feb 
      }, 
      { 
       "value": "600" //Mar 
      } 
      ] 
     }, 
     { 
      "event": "purchase", 
      "inventory": [ 
      { 
       "value": "1000" 
      }, 
      { 
       "value": "90" 
      }, 
      { 
       "value": "900" 
      } 
      ] 
     } 
     ] 
    }, 
    { 
     "data": [ 
     { 
      "event": "sales", 
      "inventory": [ 
      { 
       "value": "800" 
      }, 
      { 
       "value": "970" 
      } 
      ] 
     }, 
     { 
      "event": "purchase", 
      "inventory": [ 
      { 
       "value": "2500" 
      }, 
      { 
       "value": "2100" 
      } 
      ] 
     } 
     ] 
    }, 
    { 
     "data": [ 
     { 
      "event": "sales", 
      "inventory": [ 
      { 
       "value": "400" 
      }, 
      { 
       "value": "3300" 
      } 
      ] 
     }, 
     { 
      "event": "purchase", 
      "inventory": [ 
      { 
       "value": "2100" 
      }, 
      { 
       "value": "2900" 
      } 
      ] 
     } 
     ] 
    } 
    ] 
} 
+0

あなたのデータはJAN、FEB、MAR上に広がっていますが、フィドルのグラフはQ1、Q2、Q3に広がっています。これは目的ですか? – trincot

+0

@trincot申し訳ありませんが私のミス、私はちょうど私のチャートデータの一部を投稿..私のフィドルを更新しました。 mainDataオブジェクトから期待される出力を得るための方法 – user4324324

答えて

1

私に役立つことができ、いくつかのJavaスクリプト機能で私を導く、私は可能であれば、チャート

を作成するために、私の予想出力と試みたフィドルを添付していますこの機能:

function transformData(data) { 
 
    return { 
 
     data: data.reduce ((acc, item) => { 
 
      let i = acc.months.get(item.month) || 0; 
 
      acc.data[i] = acc.data[i] || { 
 
       data: [{ 
 
        event: "sales", 
 
        inventory: [] 
 
       }, { 
 
        event: "purchase", 
 
        inventory: [] 
 
       }] 
 
      }; 
 
      acc.data[i].data[0].inventory.push({ value: item.sales }); 
 
      acc.data[i].data[1].inventory.push({ value: item.purchase }); 
 
      acc.months.set(item.month, i+1); 
 
      return acc; 
 
     }, { months: new Map, data: [] }).data 
 
    }; 
 
} 
 

 
// Input 
 
var data = [ 
 
    { 
 
    "date": "2017-01-03", 
 
    "month": "JAN", 
 
    "sales": "200", 
 
    "purchase": "1000" 
 
    }, 
 
    { 
 
    "date": "2017-01-18", 
 
    "month": "JAN", 
 
    "sales": "800", 
 
    "purchase": "2500" 
 
    }, 
 
    { 
 
    "date": "2017-01-22", 
 
    "month": "JAN", 
 
    "sales": "400", 
 
    "purchase": "2100" 
 
    }, 
 
    { 
 
    "date": "2017-02-20", 
 
    "month": "FEB", 
 
    "sales": "40", 
 
    "purchase": "90" 
 
    }, 
 
    { 
 
    "date": "2017-02-28", 
 
    "month": "FEB", 
 
    "sales": "970", 
 
    "purchase": "2100" 
 
    }, 
 
    { 
 
    "date": "2017-02-29", 
 
    "month": "FEB", 
 
    "sales": "3300", 
 
    "purchase": "2900" 
 
    }, 
 
    { 
 
    "date": "2017-03-20", 
 
    "month": "MAR", 
 
    "sales": "600", 
 
    "purchase": "900" 
 
    } 
 
]; 
 

 
// Conversion 
 
var result = transformData(data); 
 

 
// Output 
 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

ありがとう!!それは私のために働いた – user4324324

関連する問題