| Current Path : /etc/kibana/node_modules/vega-transforms/node_modules/d3-array/src/ |
| 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);
}