2016-02-14 74 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);