lastForOf.js 806 B

1234567891011121314151617181920212223242526272829303132
  1. var isArray = require('./isArray')
  2. var keys = require('./hasOwnProp')
  3. /**
  4. * 迭代器,从最后开始迭代,支持 return false 跳出循环 break
  5. *
  6. * @param {Object} obj 对象/数组
  7. * @param {Function} iterate(item, index, obj) 回调
  8. * @param {Object} context 上下文
  9. * @return {Object}
  10. */
  11. function lastForOf (obj, iterate, context) {
  12. if (obj) {
  13. var len, list
  14. if (isArray(obj)) {
  15. for (len = obj.length - 1; len >= 0; len--) {
  16. if (iterate.call(context, obj[len], len, obj) === false) {
  17. break
  18. }
  19. }
  20. } else {
  21. list = keys(obj)
  22. for (len = list.length - 1; len >= 0; len--) {
  23. if (iterate.call(context, obj[list[len]], list[len], obj) === false) {
  24. break
  25. }
  26. }
  27. }
  28. }
  29. }
  30. module.exports = lastForOf