2017-09-29 24 views
0

我JSON數組如下,組數據的JavaScript

{ 
     "lstMonths": [ 
     "September" 
     ], 
     "lstBalances": [ 
     { 
      "AccountName": "john", 
      "AccountBalanceOnMonth": [ 
      { 
       "MonthName": "September", 
       "Amount": "-28.11" 
      } 
      ] 
     }, 
     { 
      "AccountName": "sanga\n", 
      "AccountBalanceOnMonth": [ 
      { 
       "MonthName": "September", 
       "Amount": "100" 
      } 
      ] 
     }, 
     { 
      "AccountName": "mahela", 
      "AccountBalanceOnMonth": [ 
      { 
       "MonthName": "September", 
       "Amount": "400" 
      } 
      ] 
     }, 
     { 
      "AccountName": "sachin", 
      "AccountBalanceOnMonth": [ 
      { 
       "MonthName": "September", 
       "Amount": "600" 
      } 
      ] 
     }, 
     { 
      "AccountName": "dhoni", 
      "AccountBalanceOnMonth": [ 
      { 
       "MonthName": "September", 
       "Amount": "-500" 
      } 
      ] 
     } 
     ] 
    } 

我想按帳戶名,形成輸出,

{ data: [28.11], label: 'john' }, 
    { data: [100], label: 'sanga' }, 
    { data: [400], label: 'mahela' }, 
    { data: [400], label: 'sachin' } 
    { data: [400], label: 'dhoni' } 

如果有兩個月的時間,說十月在上面然後

{ data: [28.11,3], label: 'john' }, 
    { data: [100,4], label: 'sanga' }, 
    { data: [400,4], label: 'mahela' }, 
    { data: [400,4], label: 'sachin' } 
    { data: [400,5], label: 'dhoni' } 

我試圖像上面那樣分組。任何幫助傢伙?

這裏是我的代碼:

var groupBy = function(xs, key) { 
    return xs.reduce(function(rv, x) { 
    (rv[x[key]] = rv[x[key]] || []).push(x); 
    return rv; 
    }, {}); 
}; 
console.log(groupBy(response.lstMonths, 'length')); 

請提供一種方式來找到最佳值。

編輯

JSON更多個月,

{ 「lstMonths」: 「九·一」], 「lstBalances」: { 「帳戶名」:「約翰\ n 」, 「AccountBalanceOnMonth」:[{ 「MONTHNAME」: 「九」, 「金額」: 「-28.11」 },{ 「MONTHNAME」: 「八」, 「金額」: 「-28.11」 } ] },{ 「帳戶名」: 「聯誼\ n」 個, 「AccountBalanceOnMonth」:[{ 「MONTHNAME」 : 「九」, 「金額」: 「100」 }, { 「MONTHNAME」: 「八」, 「金額」: 「233」 } ] }, { 「帳戶名」:「 mahela「, 」AccountBalanceOnMonth「:[ { 「MONTHNAME」: 「九」, 「金額」: 「400」 }, { 「MONTHNAME」: 「八」, 「金額」: 「32」 } ] }]}

+1

更多個月,請提供數據的一個例子。 –

+1

數據屬性如何生成?請解釋並重新檢查這些值。 –

+0

@NinaScholz添加了json –

回答

1

假設,

  • 只有一個陣列數據,
  • 每個月是一個值,
  • 所有月份進行排序
  • 結果幾個月應該有相同的排序,

,那麼你可以採取與賬戶的陣列和迭代賬戶建立一個新的對象爲每個帳戶,並採取平衡值的數據陣列。

var data = [{ lstMonths: ["September"], lstBalances: [{ AccountName: "john", AccountBalanceOnMonth: [{ MonthName: "September", Amount: "-28.11" }, { MonthName: "August", Amount: "-28.11" }] }, { AccountName: "sanga", AccountBalanceOnMonth: [{ MonthName: "September", Amount: "100" }, { MonthName: "August", Amount: "233" }] }, { AccountName: "mahela", AccountBalanceOnMonth: [{ MonthName: "September", Amount: "400" }, { MonthName: "August", Amount: "32" }] }] }], 
 
    grouped = data[0].lstBalances.map(function (o) { 
 
     return { 
 
      data: o.AccountBalanceOnMonth.map(function (p) { return +p.Amount; }), 
 
      label: o.AccountName 
 
     }; 
 
    }); 
 
    
 
console.log(grouped);
.as-console-wrapper { max-height: 100% !important; top: 0; }