underscore.js是很是小巧的js工具庫,特別方便處理數組,對象,json等mysql
引入underscore.js:jquery
var _ = require('underscore');
原始api列表sql
{ liveSessionDTOS: [ { sessionId: "xx", userId: xx, ..... playingGame: false, gameSessionDTO: null, liveScore: { .... } } ] }
咱們關心的是gameSessionDTO,這個遊戲列表裏的遊戲是不固定的,要按遊戲計數並存入mysql。若是每一個遊戲一列是不行的,由於沒法肯定。因此只能把json存到一個string列中(ps:mysql 5.7支持json列了,但本文不用)json
var gameinfos = _.compact(_.pluck(liveList, 'gameSessionDTO'));
pluck是按屬性提取爲一個數組,compact是過濾掉js false的數據,這裏是過濾空值,這樣就作成了api
{ gameId: 2, icon: "xxx", name: "game a" }
的列表,而後咱們再用countby按name統計數組
var game_online = _.countBy(gameinfos, function (g) { return g.name; });
就獲得了咱們要的json並存入mysqlsession
解析的部分:工具
從mysql裏讀出來後,利用_.pick抽取須要的屬性爲一個新的json,結合其餘方法再行處理ui
經常使用方法:spa
_.chain:像jquery同樣的鏈式操做,如_.chain(xx).compact().map(function(g){return g.name;}).value()
_.map, _.reduce:經典的mapreduce方法
_.clone:深拷貝一個對象,數組。生成徹底不一樣的對象