platform/video.videojs/dist/video.es.js
function reduce(object, fn) {
  var initial = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;

  return keys(object).reduce(function (accum, key) {
    return fn(accum, object[key], key);
  }, initial);
}
function reduce(object, fn) {
  var initial = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;

  return keys(object).reduce(function (accum, key) {
    return fn(accum, object[key], key);
  }, initial);
}
Array-like reduce for objects.

@param {Object} object
The Object that you want to reduce.

@param {Function} fn
A callback function which is called for each key in the object. It
receives the accumulated value and the per-iteration value and key
as arguments.

@param {Mixed} [initial = 0]
Starting value

@return {Mixed}
The final accumulated value.