使用Underscore.js解析json数组以进行映射

时间:2014-07-21 09:11:51

标签: javascript underscore.js

我有一个json数组,我想将它解析为map对象。键应该是状态,值应该是具有相同状态的数组对象。样本json如下:

{
  "totalRec": 10,
  "content": [
    {
      "name": "Pradeep",
      "age": "24",
      "state": "KA"
    },
    {
      "name": "Praveen",
      "age": "30",
      "state": "KA"
    },
    {
      "name": "Navnish",
      "age": "32",
      "state": "GOA"
    },
    {
      "name": "Vinod",
      "age": "32",
      "state": "MH"
    },
    {
      "name": "Vikas",
      "age": "32",
      "state": "MH"
    },
    {
      "name": "Harry",
      "age": "44",
      "state": "MP"
    },
    {
      "name": "Linda",
      "age": "22",
      "state": "GOA"
    },
    {
      "name": "June",
      "age": "18",
      "state": "KA"
    },
    {
      "name": "Sachin",
      "age": "32",
      "state": "GOA"
    },
    {
      "name": "Arjun",
      "age": "30",
      "state": "UP"
    }
  ]
}

我尝试使用Underscore.js并使用以下代码:

  var some_map = _.object(_.map(data.content, function(item) {
            return [item.state, item]
        }));

但是上面的代码并没有给我一个列表对象作为特定状态的值。我希望该值将包含状态的所有对象保存为键。

能告诉我出错的地方吗?

1 个答案:

答案 0 :(得分:3)

看起来你正在寻找_.groupBy()

简单地

var byState = _.groupBy(data.content, "state");

应该为您提供表格

的对象
{"GOA": [{"name": "Sachin", ...}, ...}, "UP": [...], ...}