巧用underscore.js處理複雜的json

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:深拷貝一個對象,數組。生成徹底不一樣的對象

相關文章
相關標籤/搜索