index.js 477 B

12345678910111213141516171819
  1. var hasOwn = Object.prototype.hasOwnProperty;
  2. module.exports = function (xs, f, acc) {
  3. var hasAcc = arguments.length >= 3;
  4. if (hasAcc && xs.reduce) return xs.reduce(f, acc);
  5. if (xs.reduce) return xs.reduce(f);
  6. for (var i = 0; i < xs.length; i++) {
  7. if (!hasOwn.call(xs, i)) continue;
  8. if (!hasAcc) {
  9. acc = xs[i];
  10. hasAcc = true;
  11. continue;
  12. }
  13. acc = f(acc, xs[i], i);
  14. }
  15. return acc;
  16. };