all files / scour/utilities/ filter.js

100% Statements 16/16
80% Branches 8/10
100% Functions 3/3
100% Lines 13/13
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23                    
const forEach = require('./each')
 
module.exports = function filter (each, fn, _isArray) {
  var isArray = typeof _isArray !== 'undefined' ? _isArray : Array.isArray(each)
  var result
 
  Eif (typeof each !== 'function') each = forEach.bind(this, each)
 
  if (isArray) {
    result = []
    each(function (val, key) {
      if (fn.apply(this, arguments)) result.push(val)
    })
  } else {
    result = {}
    each(function (val, key) {
      if (fn.apply(this, arguments)) result[key] = val
    })
  }
 
  return result
}