JSFiddle - React, Tailwind, and code Playground
by john_s
HTML
<div id="output">
</div>
JavaScript
function formatRange(values, options) {
options = $.extend({ useSpaces: false, useAmpersand: false }, options);
var comma = options.useSpaces ? ', ' : ',',
dash = options.useSpaces ? ' - ' : '-',
ampersand = options.useAmpersand ? (options.useSpaces ? ' & ' : '&') : comma;
var result = '';
if (values.length > 0) {
result += values[0];
if (values.length > 1) {
for (var i = 1; i < values.length; i++) {
if (((i + 1) < values.length)
&& (values[i] == (values[i - 1] + 1))
&& (values[i + 1] == (values[i] + 1))) {
result += dash;
i++;
while (((i + 1) < values.length)
&& (values[i] == (values[i - 1] + 1))
&& (values[i + 1] == (values[i] + 1))) {
i++;
}
} else {
result += (i == (values.length - 1)) ? ampersand : comma;
}
result += values[i];
}
}
}
return result;
}
$('#output').text(formatRange([1, 2, 4, 6, 7], { useSpaces: true }));