集合(五) groupBy - sanlex/async_chinese GitHub Wiki

groupBy

groupBy (coll, iteratee, callback)

返回一个对象,对象中的每一个值对应于coll中的键组成的一个数组。返回对象中的键就是,iteratee中回调的值。

注意:因为 iteratee 都是并行执行的,所以不能保证iteratee会按顺序执行。但是对象中每个键的值,会按照coll中的顺序排列出来。对于对象,值将大致按照原始对象的键的顺序(但是JavaScript可能会有所不同)。

参数:

Name Type Description
coll Array/Iterable/Object 要迭代的集合
iteration AsyncFunction 迭代执行coll中的值,并将这些值组合成查询结果中key的值,使用(value,callback)的方式调用。
callbac function 所有的iteratee执行完成或出现错误时调用。结果为一个对象,对象的键为函数执行返回值,值为参数组成的数组。

案例:

async.groupBy(['userId1', 'userId2', 'userId3'], function(userId, callback) {
    db.findById(userId, function(err, user) {
        if (err) return callback(err);
        return callback(null, user.age);
    });
}, function(err, result) {
    // result为一个对象,值由userId组成 ,键为 user.age
    // 例如: { 30: ['userId1', 'userId3'], 42: ['userId2']};
});

groupByLimit

groupByLimit (coll, limit, iteratee, callback)

和 groupBy 一样,通过limit限制并行的最大数

groupBySeries

groupBySeries(coll, limit, iteratee, callback)

和 filter 一样,所有的元素按顺序执行

所得结果由执行所得结果自然排列

上一篇 集合(四) filter
下一篇 集合(六) map

⚠️ **GitHub.com Fallback** ⚠️