filter.js 551 B

1234567891011121314151617181920212223242526
  1. var each = require('./each')
  2. /**
  3. * 根据回调过滤数据
  4. *
  5. * @param {Object} obj 对象/数组
  6. * @param {Function} iterate(item, index, obj) 回调
  7. * @param {Object} context 上下文
  8. * @return {Object}
  9. */
  10. function filter (obj, iterate, context) {
  11. var result = []
  12. if (obj && iterate) {
  13. if (obj.filter) {
  14. return obj.filter(iterate, context)
  15. }
  16. each(obj, function (val, key) {
  17. if (iterate.call(context, val, key, obj)) {
  18. result.push(val)
  19. }
  20. })
  21. }
  22. return result
  23. }
  24. module.exports = filter