apemandb
Version:
Database for apeman project.
30 lines (27 loc) • 783 B
JavaScript
/**
* @function integersString
*/
/** @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