objectMap.js 694 B

123456789101112131415161718192021222324252627282930
  1. var each = require('./each')
  2. var isFunction = require('./isFunction')
  3. var property = require('./property')
  4. /**
  5. * 指定方法后的返回值组成的新对象
  6. *
  7. * @param {Object} obj 对象/数组
  8. * @param {Function} iterate(item, index, obj) 回调
  9. * @param {Object} context 上下文
  10. * @return {Object}
  11. */
  12. function objectMap (obj, iterate, context) {
  13. var result = {}
  14. if (obj) {
  15. if (iterate) {
  16. if (!isFunction(iterate)) {
  17. iterate = property(iterate)
  18. }
  19. each(obj, function (val, index) {
  20. result[index] = iterate.call(context, val, index, obj)
  21. })
  22. } else {
  23. return obj
  24. }
  25. }
  26. return result
  27. }
  28. module.exports = objectMap