quantile.js 499 B

1234567891011121314
  1. import number from "./number";
  2. export default function(values, p, valueof) {
  3. if (valueof == null) valueof = number;
  4. if (!(n = values.length)) return;
  5. if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);
  6. if (p >= 1) return +valueof(values[n - 1], n - 1, values);
  7. var n,
  8. i = (n - 1) * p,
  9. i0 = Math.floor(i),
  10. value0 = +valueof(values[i0], i0, values),
  11. value1 = +valueof(values[i0 + 1], i0 + 1, values);
  12. return value0 + (value1 - value0) * (i - i0);
  13. }