Your IP : 216.73.216.17


Current Path : /etc/kibana/node_modules/vega-transforms/node_modules/d3-array/src/
Upload File :
Current File : //etc/kibana/node_modules/vega-transforms/node_modules/d3-array/src/median.js

import quantile from "./quantile";
import quickselect from "./quickselect";

function* numbers(values, valueof) {
  if (valueof === undefined) {
    for (let value of values) {
      if (value != null && (value = +value) >= value) {
        yield value;
      }
    }
  } else {
    let index = -1;
    for (let value of values) {
      if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {
        yield value;
      }
    }
  }
}

export default function(values, valueof) {
  values = Float64Array.from(numbers(values, valueof));
  if (!values.length) return;
  const n = values.length;
  const i = n >> 1;
  quickselect(values, i - 1, 0);
  if ((n & 1) === 0) quickselect(values, i, i);
  return quantile(values, 0.5);
}