Skip to content

Instantly share code, notes, and snippets.

@loretoparisi
Created November 10, 2017 11:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save loretoparisi/67354cf1cb8d9ebf57d39c7b9903606d to your computer and use it in GitHub Desktop.
Save loretoparisi/67354cf1cb8d9ebf57d39c7b9903606d to your computer and use it in GitHub Desktop.
Get Statistics of a Array of Objects
var arrayObjectStatistics = function(arr) {
var keys=[];
arr.forEach(a => Object.keys(a).forEach(k => keys.push(a[k])))
var stats=[...keys.reduce( (m, v) => m.set(v, (m.get(v) || 0) + 1), new Map() )].sort((a,b) => b[1]-a[1])
stats=stats.map(c => new Object({label: c[0], count: c[1], mean: parseInt(c[1])/arr.length}) )
return stats;
}
@loretoparisi
Copy link
Author

langs=[{lang:"en", class:"spam"},{lang:"en", class:"spam"},{lang:"it", class:"ham"},{lang:"pt", class:"spam"},{lang:"ja", class:"ham"},{lang:"de", class:"spam"},{lang:"es", class:"ham"}]
JSON.stringify( arrayObjectStatistics(langs))
"[{"label":"spam","count":4,"mean":0.5714285714285714},{"label":"ham","count":3,"mean":0.42857142857142855},{"label":"en","count":2,"mean":0.2857142857142857},{"label":"it","count":1,"mean":0.14285714285714285},{"label":"pt","count":1,"mean":0.14285714285714285},{"label":"ja","count":1,"mean":0.14285714285714285},{"label":"de","count":1,"mean":0.14285714285714285},{"label":"es","count":1,"mean":0.14285714285714285}]"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment