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 一样,所有的元素按顺序执行
所得结果由执行所得结果自然排列