interface AlignLine { value: number; range: [number, number]; } // 对齐参考线去重,对于相同位置的多条参考线,取长度范围的最小值和最大值,并基于此范围将多条参考线合并为一条 export const uniqAlignLines = (lines: AlignLine[]) => { const uniqLines: AlignLine[] = [] lines.forEach(line => { const index = uniqLines.findIndex(_line => _line.value === line.value) if(index === -1) uniqLines.push(line) else { const uniqLine = uniqLines[index] const rangeMin = Math.min(uniqLine.range[0], line.range[0]) const rangeMax = Math.max(uniqLine.range[1], line.range[1]) const range: [number, number] = [rangeMin, rangeMax] const _line = { value: line.value, range } uniqLines[index] = _line } }) return uniqLines }