Здесь должно быть предупреждение о том, что работать это будет только в самых современных браузерах, а для старых нужно транспайлить в ES5 (и код получится в 42 раза больше, чем при использовании обычного цикла).
Но решение красивое, лет через 5 можно будет использовать без оговорок :)
Какой-то универсальной формулы нет, конечно. Но вы можете придумать такую под себя - только вы же знаете, что такое "скачки" в ваших данных. Можете верхнюю границу взять и отбрасывать всё, что больше неё, можете, как я писал выше, искать медиану для перцентили (но в приведённом примере она всё равно не даст меньше 19, если отбрасывать сверху и снизу).
Ankhena, все зависит от того, какая у задачи точная формулировка и насколько нужно соответствовать макетам. У большинства задач в нашей сфере есть не одно решение иу каждого свои достоинства и недостатки.
Здесь только одна проблема — нижние строки съедают тех, что выше. В примере у «р» ногу отгрызли. Но если конкретные размеры выделения не критичны, то можно подогнать.
Ну и фиксированная ширина для кого-то может быть проблемой.
Но решение красивое, лет через 5 можно будет использовать без оговорок :)