@mui/x-charts
Version:
The community edition of MUI X Charts components.
22 lines (21 loc) • 754 B
JavaScript
import { getAsNumber } from "./getAsNumber.mjs";
/**
* Returns the index of the entry in `axisData` whose numeric value is closest
* to `valueAsNumber`. Returns -1 if `axisData` is empty.
*/
export function findClosestIndex(axisData, valueAsNumber) {
return axisData.findIndex((pointValue, index) => {
const v = getAsNumber(pointValue);
if (v > valueAsNumber) {
if (index === 0 || Math.abs(valueAsNumber - v) <= Math.abs(valueAsNumber - getAsNumber(axisData[index - 1]))) {
return true;
}
}
if (v <= valueAsNumber) {
if (index === axisData.length - 1 || Math.abs(valueAsNumber - v) < Math.abs(valueAsNumber - getAsNumber(axisData[index + 1]))) {
return true;
}
}
return false;
});
}