find.ts 698 B

1234567891011121314151617181920212223242526272829
  1. import isFunction from './is-function';
  2. import isMatch from './is-match';
  3. import isArray from './is-array';
  4. import isPlainObject from './is-plain-object';
  5. function find<T>(arr: T[], predicate: Function): T;
  6. function find<T>(arr: T[], predicate: object): T;
  7. function find<T>(arr: T[], predicate: Function | object): T {
  8. if (!isArray(arr)) return null;
  9. let _predicate;
  10. if (isFunction(predicate)) {
  11. _predicate = predicate;
  12. }
  13. if (isPlainObject(predicate)) {
  14. _predicate = a => isMatch(a, predicate);
  15. }
  16. if (_predicate) {
  17. for (let i = 0; i < arr.length; i += 1) {
  18. if (_predicate(arr[i])) {
  19. return arr[i];
  20. }
  21. }
  22. }
  23. return null;
  24. }
  25. export default find;