Estoy construyendo una matriz pasando números individuales y rangos de números como cadenas y quiero poder realizar una función en esta matriz y devolver una cadena separada por comas, primero por orden de los números y también agrupados si existen.
por ejemplo tengo
['13','2','1','7-9','14','3','15-16','20']Y me gustaría poder obtener el siguiente resultado:
'1-3,7-9,13-16,20'Esto es lo que he intentado hasta ahora:
function getRangeValues(range) { var start = Number(range.split('-')[0]); var end = Number(range.split('-')[1]); return Array(end - start + 1).fill().map((_, idx) => start + idx) } var splitArray = []; var originalArray = ['13','2','1','7-9','14','3','15-16','20'] originalArray.forEach(e => { e.includes('-') ? splitArray.push(...getRangeValues(e)) : splitArray.push(parseInt(e)) }); splitArray.sort(function(a, b){return a - b}); console.log(splitArray) // returns [1, 2, 3, 7, 8, 9, 13, 14, 15, 16, 20]¿Cómo recorro esta nueva matriz para averiguar qué rangos existen dentro de ella y luego devuelvo una cadena que muestra los rangos y los valores individuales en orden ascendente?
Por ejemplo:
'1-3,7-9,13-16,20'