如何计算集合中符合特定条件的项目?

时间:2014-07-11 19:16:56

标签: backbone.js underscore.js

我有一个这样的集合:

{ "items": [
    {
     "id": "123",
     "meta": {
        "activity": 2
     }
    },
    {
     "id": "13423",
     "meta": {
        "activity": 4
     }
    }
]}

鉴于收集,我如何获得收集的总活动?在上面的例子中,结果将是6。

我使用骨干和下划线。

由于

2 个答案:

答案 0 :(得分:1)

在下划线中,您可以使用reduce函数,该函数将使用给定的迭代器函数将值列表减少为单个值。

var myCollection = { "items": [
    {
        "id": "123",
        "meta": {
            "activity": 2
        }
    },
    {
        "id": "13423",
        "meta": {
            "activity": 4
        }
    }
]};

var totalActivity = _.reduce(myCollection.items, function(memo, item){ return memo + item.meta.activity; }, 0);

答案 1 :(得分:1)

您正在使用underscore.js,因此您可以使用一些好的工具。请看_.map()开始。

var flatArray = _.map(collection.items, function(x){return x.meta.activity;});
// should return: [2,4]

然后您可以使用_.reduce()将其转换为单个值。

var total = _.reduce(flatArray, function(memo, num) {return memo + num;}, 0);
// should return: 6

在underscore.js中有很多其他很棒的工具,值得一看,看看是否还有其他任何东西对你有效。