Dada una matriz
A = [1,2,3,5,6,7,8,10,0,1,1,2,4,10,6,7,3], agrupa los elementos consecutivos que son mayores que 2 en sub-matrices.El resultado deseado es
result = [[2,3,5,6,7,8,10],[2,4,10,6,7,3]].Ejemplo:
A = [1,2,3,5,6,7,8,10,0,1,1,2,4,10,6,7,3]
Salida:result = [[2,3,5,6,7,8,10],[2,4,10,6,7,3]]
¿Alguien podría ayudar con esta pregunta?
Yo he tratado:
const a = [0, 1, 2, 5, 6, 9]; const result = a.reduce((acc, current) => const lastSubArray = acc[acc.length - 1]; console.log(`${acc}-${current}`) console.log(lastSubArray[lastSubArray.length - 1]); if (current >2 && lastSubArray[lastSubArray.length - 1]>2) { acc.push(current); } acc[acc.length - 1].push(current); console.log(acc); return acc; }, []); console.log(result);Puede usar una variable global para realizar un seguimiento de los índices, de modo que sea posible detectar cuándo existe una brecha entre dos números, lo que le permite agregar otra matriz. En combinación, el uso de operadores ternarios puede hacer que el código sea más limpio para probar las condiciones.
const arr = [1, 2, 3, 5, 6, 7, 8, 10, 0, 1, 1, 2, 4, 10, 6, 7, 3]; let lastIdx = -1 const results = arr.reduce((acc, current, idx) => ( current > 2 ? ( lastIdx + 1 === idx && acc.length ? ( lastIdx = idx, acc[acc.length - 1].push(current), acc ) : ( lastIdx = idx, [...acc, [current]] ) ) : acc ) , []) console.log(results);