巧用underscore.js处理复杂的json

Posted Els0n

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了巧用underscore.js处理复杂的json相关的知识,希望对你有一定的参考价值。

underscore.js是非常小巧的js工具库,特别方便处理数组,对象,json等


引入underscore.js:

var _ = require(‘underscore‘);

原始api列表

{
  liveSessionDTOS: [
    {
      sessionId: "xx",
      userId: xx,
      .....
      playingGame: false,
      gameSessionDTO: null,
      liveScore: {
        ....
      }
    }
  ]
}

我们关心的是gameSessionDTO,这个游戏列表里的游戏是不固定的,要按游戏计数并存入mysql。如果每个游戏一列是不行的,因为无法确定。所以只能把json存到一个string列中(ps:mysql 5.7支持json列了,但本文不用)

var gameinfos = _.compact(_.pluck(liveList, ‘gameSessionDTO‘));

pluck是按属性提取为一个数组,compact是过滤掉js false的数据,这里是过滤空值,这样就做成了

{
    gameId: 2,
    icon: "xxx",
    name: "game a"
}

的列表,然后我们再用countby按name统计

var game_online = _.countBy(gameinfos, function (g) {
    return g.name;
});

就得到了我们要的json并存入mysql

解析的部分:

从mysql里读出来后,利用_.pick抽取需要的属性为一个新的json,结合其他方法再行处理

常用方法:

_.chain:像jquery一样的链式操作,如_.chain(xx).compact().map(function(g){return g.name;}).value()

_.map, _.reduce:经典的mapreduce方法

_.clone:深拷贝一个对象,数组。生成完全不同的对象

以上是关于巧用underscore.js处理复杂的json的主要内容,如果未能解决你的问题,请参考以下文章

模板引擎原理及underscore.js使用

工作中对数组的一些处理,整理(结合underscore.js)

巧用Newtonsoft.Json处理重复请求/并发请求?

backbone 唯一依赖库Underscore.js

Underscore.js常用方法

*.d.ts 文件来自哪里?