helperCreateIterateHandle.js 985 B

12345678910111213141516171819202122232425262728293031
  1. var hasOwnProp = require('./hasOwnProp')
  2. var isArray = require('./isArray')
  3. function helperCreateIterateHandle (prop, useArray, restIndex, matchValue, defaultValue) {
  4. return function (obj, iterate, context) {
  5. if (obj && iterate) {
  6. if (prop && obj[prop]) {
  7. return obj[prop](iterate, context)
  8. } else {
  9. if (useArray && isArray(obj)) {
  10. for (var index = 0, len = obj.length; index < len; index++) {
  11. if (!!iterate.call(context, obj[index], index, obj) === matchValue) {
  12. return [true, false, index, obj[index]][restIndex]
  13. }
  14. }
  15. } else {
  16. for (var key in obj) {
  17. if (hasOwnProp(obj, key)) {
  18. if (!!iterate.call(context, obj[key], key, obj) === matchValue) {
  19. return [true, false, key, obj[key]][restIndex]
  20. }
  21. }
  22. }
  23. }
  24. }
  25. }
  26. return defaultValue
  27. }
  28. }
  29. module.exports = helperCreateIterateHandle