sum.js 817 B

12345678910111213141516171819202122232425262728
  1. var helperNumberAdd = require('./helperNumberAdd')
  2. var isFunction = require('./isFunction')
  3. var isArray = require('./isArray')
  4. var each = require('./each')
  5. var get = require('./get')
  6. /**
  7. * 求和函数,将数值相加
  8. *
  9. * @param {Array} array 数组
  10. * @param {Function/String} iterate 方法或属性
  11. * @param {Object} context 上下文
  12. * @return {Number}
  13. */
  14. function sum (array, iterate, context) {
  15. var result = 0
  16. each(array && array.length > 2 && isArray(array) ? array.sort() : array, iterate ? isFunction(iterate) ? function () {
  17. result = helperNumberAdd(result, iterate.apply(context, arguments))
  18. } : function (val) {
  19. result = helperNumberAdd(result, get(val, iterate))
  20. } : function (val) {
  21. result = helperNumberAdd(result, val)
  22. })
  23. return result
  24. }
  25. module.exports = sum