2016-02-14 75 views
0

我不是故意重複任何問題,因爲我在StackOverflow上閱讀了很多很棒的答案。任何智能的JSON/JS對象統計軟件包?

鑑於以下JSON數據:

[ 
    { 
    「department」: 「vice」, 
    「team」: [ 
     { 
     "selected": "Yes" 
     }, 
     { 
     「selected": 「No」 
     } 
    ], 
    「fund」: [ 
     「team_a」 
     「team_c」 
    ] 
    } 
] 

我想返回的選擇的算的,所以從上面的'yes'=1'no'=1。 我知道我能做到這一點通過for循環,使用簡單countYes++返回答案,但我有2個問題如下:

  • 是否有任何其他的方式(即使用一些NPM包)。
  • 在我的例子中,選項很簡單是和否,如果我有一個更大的要計數的列表,如何計算所有唯一的> 0?

謝謝。

回答

0

我試圖寫使用香草JS,你可以尋找像庫underscore,lodash更多的選項。

var data = [ 
    { 
     "department": "vice", 
     "team": [ 
      { 
       "selected": "Yes" 
      }, 
      { 
       "selected": "No" 
      } 
     ], 
     "fund": [ 
      "team_a", 
      "team_c" 
     ] 
    }, 
    { 
     "department": "vice", 
     "team": [ 
      { 
       "selected": "Yes" 
      }, 
      { 
       "selected": "Yes" 
      } 
     ], 
     "fund": [ 
      "team_a", 
      "team_c" 
     ] 
    }, 
    { 
     "department": "vice", 
     "team": [ 
      { 
       "selected": "Yes" 
      }, 
      { 
       "selected": "No" 
      } 
     ], 
     "fund": [ 
      "team_a", 
      "team_c" 
     ] 
    } 
]; 
function decisionReducer(prev, next) { 
    var team = next.team; 
    if (team && Array.isArray(team)) { 
     team.forEach(function (row) { 
      if (row.selected === 'Yes') { 
       prev.yes += 1; 
      } 
      if (row.selected === 'No') { 
       prev.no += 1; 
      } 
     }) 
    } 
    return prev; 
}; 
var counter = data.reduce(decisionReducer, {yes: 0, no: 0}) 
console.log(counter);