Skip to content

Commit 56051df

Browse files
authored
Merge pull request caolan#1320 from caolan/pr/1297
Pr/1297
2 parents b4d794c + e799520 commit 56051df

File tree

2 files changed

+45
-4
lines changed

2 files changed

+45
-4
lines changed

lib/internal/filter.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ export default function _filter(eachfn, arr, iteratee, callback) {
1010
iteratee(x, function (err, v) {
1111
if (err) {
1212
callback(err);
13-
}
14-
else {
13+
} else {
1514
if (v) {
1615
results.push({index: index, value: x});
1716
}
@@ -21,8 +20,7 @@ export default function _filter(eachfn, arr, iteratee, callback) {
2120
}, function (err) {
2221
if (err) {
2322
callback(err);
24-
}
25-
else {
23+
} else {
2624
callback(null, arrayMap(results.sort(function (a, b) {
2725
return a.index - b.index;
2826
}), property('value')));

mocha_test/filter.js

+43
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,49 @@ describe("filter", function () {
4141
});
4242
});
4343

44+
it('filter collection', function(done){
45+
var a = {a: 3, b: 1, c: 2};
46+
async.filter(a, function(x, callback){
47+
callback(null, x % 2);
48+
}, function(err, results){
49+
expect(err).to.equal(null);
50+
expect(results).to.eql([3,1]);
51+
expect(a).to.eql({a: 3, b: 1, c: 2});
52+
done();
53+
});
54+
});
55+
56+
if (typeof Symbol === 'function' && Symbol.iterator) {
57+
function makeIterator(array){
58+
var nextIndex;
59+
let iterator = {
60+
next: function(){
61+
return nextIndex < array.length ?
62+
{value: array[nextIndex++], done: false} :
63+
{done: true};
64+
}
65+
};
66+
iterator[Symbol.iterator] = function() {
67+
nextIndex = 0; // reset iterator
68+
return iterator;
69+
};
70+
return iterator;
71+
}
72+
73+
it('filter iterator', function(done){
74+
var a = makeIterator([500, 20, 100]);
75+
async.filter(a, function(x, callback) {
76+
setTimeout(function() {
77+
callback(null, x > 20);
78+
}, x);
79+
}, function(err, results){
80+
expect(err).to.equal(null);
81+
expect(results).to.eql([500, 100]);
82+
done();
83+
});
84+
});
85+
}
86+
4487
it('filter error', function(done){
4588
async.filter([3,1,2], function(x, callback){
4689
callback('error');

0 commit comments

Comments
 (0)