Tengo una matriz como esta:
arr = [1,3,4,5,7,8]Necesito verificar si el siguiente número es consecutivo al número actual y, si lo es, almacenar ambos juntos; de lo contrario, almaceno el número único en una matriz.
La matriz anterior debería dar el siguiente resultado:
newArray = [1, 345, 78]Intenté una solución simple y solo logré lo que quería si fueran solo 2 números consecutivos:
for (i = 0; i < array.length; i++) { if (array[i] === array[i - 1] + 1) { newArray.push(array[i - 1] + array[i]); } else { newArray.push(array[i]); } }Y cuando traté de hacer más números, las cosas se complicaron mucho.
Sé que esto no parece un problema importante, pero lo intento durante horas y no puedo encontrar el resultado.
puedes hacer algo como esto
const arr = [1,3,4,5,7,8] const groupConsecutive = arr => { const result = arr.reduce((res, n) => { if(n - res.prev === 1){ return { prev: n, current: [...res.current, n.toString()], total: res.total } } return { prev: n, current: [n.toString()], total: [...res.total, res.current] } }, {prev: '', current: [], total: []}) return [...result.total, result.current].flatMap(n => Number(n.join(''))) } console.log(groupConsecutive(arr))