2017-07-18 17 views
2

私はJavaScriptでこれらの配列を持っているの応答を4次元配列を作成します:私はJSONをバック与えることAJAX呼び出しを作成し
は、Ajaxコール

var data = [ 
      { y: '2017-01', a: 50, b: 90, c:110}, 
      { y: '2017-02', a: 65, b: 75, c:120}, 
      { y: '2017-03', a: 50, b: 50, c:10}, 
      { y: '2017-04', a: 75, b: 60, c:170}, 
      { y: '2017-05', a: 80, b: 65, c:60}, 
      { y: '2017-06', a: 90, b: 70, c:30}, 
      { y: '2017-07', a: 100, b: 75, c:10}, 
      { y: '2017-08', a: 115, b: 75, c:0}, 
      { y: '2017-09', a: 120, b: 85, c:0} 
     ] 

$.ajax({ 
       type: "POST", 
       url: "php/get_incomes_months.php", 
       data: {year:current_year}, 
       dataType: "json", 
       success: function(data) { 
        var data_array = [ 
         {y:data[0]['date'], a:data[0]['validated'], b:data[0]['revenue'], c:data[0]['costes']}, 
         {y:data[1]['date'], a:data[1]['validated'], b:data[1]['revenue'], c:data[1]['costes']} 
        ]; 
        fooDone(data_array); //after we have data, we pass it to fooDone  
       }, 
       error: function(data){ 

       } 
      }); 

これはJSONです:

私は実際に私はそれを手動でやっている、bucleアレイ用の内部で作成する必要が成功の機能でここ
0 Object 
validated "0" 
revenue "50244.81" 
costes "0" 
date "2017-01" 
1 Object 
validated "44788.16" 
revenue "30640.51" 
costes "0" 
date "2017-02" 
2 Object 
validated "68324.64" 
revenue "80363.51" 
costes "11072.73" 
date "2017-03" 
3 Object 
validated "0" 
revenue "50244.81" 
costes "0" 
date "2017-04" 
4 Object 
validated "2738" 
revenue "103145.62" 
costes "11" 
date "2017-05" 
5 Object 
validated "510" 
revenue "1459283.09" 
costes "213" 
date "2017-06" 
6 Object 
validated "24034.21" 
revenue "50367.81" 
costes "0" 
date "2017-07" 
7 Object 
validated "24" 
revenue "50244.81" 
costes "0" 
date "2017-08" 

....

success: function(data) { 
         var data_array = [ 
          {y:data[0]['date'], a:data[0]['validated'], b:data[0]['revenue'], c:data[0]['costes']}, 
          {y:data[1]['date'], a:data[1]['validated'], b:data[1]['revenue'], c:data[1]['costes']} 
         ]; 

の機能から新しい配列を作成するために、

+0

すべてのjsonオブジェクトをループし、data_array.push(your_object) – NeuTronas

+0

でデータ配列にプッシュするだけで、より詳細に指定できますか? @NeuTronas –

+0

@SergioSuarez私の答えの最初の選択肢を見てみましょう。これが彼の話です。 –

答えて

0

、これはあなたの望ましい結果を与えることはありません。

空の配列を宣言し、各反復でカスタムオブジェクトをその配列にプッシュする必要があります。

あなたは自分の data配列からカスタム配列を作成する .map()メソッドを使用することができます
success: function(data) { 
    var data_array = []; 
    data.forEach(function(obj) { 
    data_array.push({ 
     y: obj['date'], 
     a: obj['validated'], 
     b: obj['revenue'], 
     c: obj['costes'] 
    }); 
    }); 
    fooDone(data_array); 
}, 

、これはあなたのコードがどうあるべきかである:それはカスタムを返しますあなたのdata配列の各objectについては

success: function(data) { 
    var data_array = data.map(function(obj) { 
    return { 
     y: obj['date'], 
     a: obj['validated'], 
     b: obj['revenue'], 
     c: obj['costes'] 
    }; 
    }); 
    fooDone(data_array); 
}, 

要求されたプロパティを持つobject

+0

完璧に動作します!あなたに感謝@chsdk –

+0

@SergioSuarez素晴らしい、喜んでそれが役立ちます。 –

0

使用Array.prototype.mapを助けてください配列。あなたは常に2つの要素の配列を返すされている、あなたの実際のコードで

var data = [ 
 
    { date: '2017-01', validated: 50, revenue: 90, costes:110}, 
 
    { date: '2017-02', validated: 65, revenue: 75, costes:120}, 
 
    { date: '2017-03', validated: 50, revenue: 50, costes:10}, 
 
    { date: '2017-04', validated: 75, revenue: 60, costes:170}, 
 
    { date: '2017-05', validated: 80, revenue: 65, costes:60}, 
 
    { date: '2017-06', validated: 90, revenue: 70, costes:30}, 
 
    { date: '2017-07', validated: 100, revenue: 75, costes:10}, 
 
    { date: '2017-08', validated: 115, revenue: 75, costes:0}, 
 
    { date: '2017-09', validated: 120, revenue: 85, costes:0} 
 
]; 
 
var data_array = data.map(e => ({y: e.date, a: e.validated, b: e.revenue, c: e.costes})); 
 
console.log(data_array);

+0

@Barman SyntaxError:missing;前の声明[Sabremás]にはそのエラーが与えられました。 –

+0

矢印関数の構文のあいまいさを修正するための括弧が追加されました。 – Barmar

+0

ありがとうございます。それはあまりにも動作するようです –