UNPKG

zent

Version:

一套前端设计语言和基于React的实现

52 lines (49 loc) 1.05 kB
function cmp(a: number, b: number): number { if (a < b) { return -1; } if (a > b) { return 1; } return 0; } export function getPotentialValues( marks: Record<string | number, React.ReactNode> | undefined ) { if (!marks) { return []; } return Object.keys(marks) .map(it => Number(it)) .filter(it => !Number.isNaN(it) && it !== Infinity) .sort(cmp); } export function normalizeToPotentialValue( potentialValues: number[], value: number ) { let i = 0; let j = potentialValues.length; // eslint-disable-next-line no-constant-condition while (true) { const p = Math.floor((i + j) / 2); if (j === i + 1 || p === i) { if ( Math.abs(potentialValues[i] - value) <= Math.abs(potentialValues[j] - value) ) { return potentialValues[i]; } return potentialValues[j]; } const mid = potentialValues[p]; if (value === mid) { return mid; } if (value < mid) { j = p; } else if (value > mid) { i = p; } } }