groupBy

  1. 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执行完成或出现错误时调用。结果为一个对象,对象的键为函数执行返回值,值为参数组成的数组。

案例:

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

groupByLimit

  1. groupByLimit (coll, limit, iteratee, callback)

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

groupBySeries

  1. groupBySeries(coll, limit, iteratee, callback)

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

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