| 12345678910111213141516171819202122 |
- export 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
- }
|