UNPKG

apemandb

Version:
30 lines (27 loc) 783 B
/** * @function integersString */ 'use strict' /** @lends integersString */ function integersString (values) { return values .map((value) => Number(value)) .filter((value) => typeof value !== 'undefined') .sort((a, b) => a - b) .reduce((reduced, value) => { let group = reduced[ reduced.length - 1 ] let isNext = value === (group[ group.length - 1 ] + 1) if (isNext) { group.push(value) } else { reduced.push([ value ]) } return reduced }, [ [] ]) .filter((group) => group.length > 0) .map((group) => { let [ first, last ] = [ group[ 0 ], group[ group.length - 1 ] ] return first === last ? String(first) : [ first, last ].join('..') }).join(',') } module.exports = integersString