//Make sure we have an Array.reduce() function. if (!Array.prototype.reduce) { Array.prototype.reduce = function(callbackfn, initVal) { "use strict"; var arr = this, arrLen = arr.length, k = 0, accumulator = initVal === undefined ? undefined : initVal; for(;k < arrLen;k++) { if (accumulator !== undefined && k in arr) { accumulator = callbackfn.call(undefined, accumulator, arr[k], k, arr); } else { accumulator = arr[k]; } } return accumulator; }; }