static/plugins/math.js (16 lines of code) (raw):
// Math functions not supplied by JS
Math.median = function (numbers) {
const numbers_sorted = Array.from(numbers).sort((a, b) => a - b);
const middle_pos = Math.floor(numbers_sorted.length / 2);
// Even number of elements, return the average of the two in the middle
if (numbers_sorted.length % 2 === 0) {
return (numbers_sorted[middle_pos - 1] + numbers_sorted[middle_pos]) / 2;
}
// Odd number of elements, return the middle one
return numbers_sorted[middle_pos];
}
Math.sum = (numbers) => numbers.reduce((a,b) => a+b);
Number.prototype.pretty = function(fix) {
if (fix) {
return String(this.toFixed(fix)).replace(/(\d)(?=(\d{3})+\.)/g, '$1,');
}
return String(this.toFixed(0)).replace(/(\d)(?=(\d{3})+$)/g, '$1,');
};