使用下划线组来构造我的数组

时间:2014-02-15 04:00:11

标签: javascript arrays backbone.js underscore.js

我有一个格式如下的数组

[
{
    "duedate": "15-feb-2014",
    "alias": "electronus",
    "agent": "anonymous",
    "name": ""
},
{
    "duedate": "15-feb-2014",
    "alias": "luminous",
    "agent": "anonymous",
    "name": ""
},
{
    "duedate": "16-feb-2014",
    "alias": "GSM",
    "agent": "anonymous",
    "name": ""
}
]

按方法的下划线组允许我使用属性对数组进行分组,在我的情况下使用截止日期。这将返回一个像这样的数组

{
"15-Feb-2014": [
    {
        "duedate": "15-feb-2014",
        "alias": "electronus",
        "agent": "anonymous",
        "name": ""
    },
    {
        "duedate": "15-feb-2014",
        "alias": "luminous",
        "agent": "anonymous",
        "name": ""
    }
],
"16-Feb-2014": [
    {
        "duedate": "16-feb-2014",
        "alias": "GSM",
        "agent": "anonymous",
        "name": ""
    }
]
}

我是否有可能拥有这样的数组:

[
{
    "duedate": "15-feb-2014",
    "myValues": [
        {
            "duedate": "15-feb-2014",
            "alias": "electronus",
            "agent": "anonymous",
            "name": ""
        },
        {
            "duedate": "15-feb-2014",
            "alias": "luminous",
            "agent": "anonymous",
            "name": ""
        }
    ]
},
{
    "duedate": "16-feb-2014",
    "myValues": [
        {
            "duedate": "16-feb-2014",
            "alias": "GSM",
            "agent": "anonymous",
            "name": ""
        }
    ]
}
]

所以我可以在每个截止日期内有多个数组值,所以我可以解析它以填充我无法更改的模板。

我一直在努力解决这个问题。任何帮助都会感激不尽。

1 个答案:

答案 0 :(得分:4)

您只需在map() ...

之后致电groupBy()
var groupedArray = _.chain(list)
                       .groupBy(function (x) { return x.duedate })
                       .map(function (value, date) { 
                           return {
                               duedate: date,
                               myValues: value
                           };
                       })
                       .value();

JS小提琴:http://jsfiddle.net/t2tCa/