diff options
Diffstat (limited to 'lib/internal/filter.js')
-rw-r--r-- | lib/internal/filter.js | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/lib/internal/filter.js b/lib/internal/filter.js index 1923264..4c9422b 100644 --- a/lib/internal/filter.js +++ b/lib/internal/filter.js @@ -1,17 +1,16 @@ import isArrayLike from './isArrayLike'; -import property from './property'; import noop from './noop'; import wrapAsync from './wrapAsync'; function filterArray(eachfn, arr, iteratee, callback) { var truthValues = new Array(arr.length); - eachfn(arr, function (x, index, callback) { - iteratee(x, function (err, v) { + eachfn(arr, (x, index, callback) => { + iteratee(x, (err, v) => { truthValues[index] = !!v; callback(err); }); - }, function (err) { + }, err => { if (err) return callback(err); var results = []; for (var i = 0; i < arr.length; i++) { @@ -23,29 +22,26 @@ function filterArray(eachfn, arr, iteratee, callback) { function filterGeneric(eachfn, coll, iteratee, callback) { var results = []; - eachfn(coll, function (x, index, callback) { - iteratee(x, function (err, v) { + eachfn(coll, (x, index, callback) => { + iteratee(x, (err, v) => { if (err) { callback(err); } else { if (v) { - results.push({index: index, value: x}); + results.push({index, value: x}); } callback(); } }); - }, function (err) { - if (err) { - callback(err); - } else { - callback(null, results.sort(function (a, b) { - return a.index - b.index; - }).map(property('value'))); - } + }, err => { + if (err) return callback(err); + callback(null, results + .sort((a, b) => a.index - b.index) + .map(v => v.value)); }); } export default function _filter(eachfn, coll, iteratee, callback) { var filter = isArrayLike(coll) ? filterArray : filterGeneric; - filter(eachfn, coll, wrapAsync(iteratee), callback || noop); + return filter(eachfn, coll, wrapAsync(iteratee), callback || noop); } |