Tengo la siguiente matriz de números:
[10, 12, 23, 17, 14, 15, 50, 72, 26, 33]Y quiero agrupar todos los números pares que aparecen juntos, como se muestra a continuación:
[ [ 10, 12 ], [ 14 ], [ 50, 72, 26 ] ] Puedo filtrar los números pares, pero no puedo agrupar los contiguos. Creo que reduce se puede usar aquí, pero no puedo entender cómo, cualquier ayuda es muy apreciada.
const nums = [10, 12, 23, 17, 14, 15, 50, 72, 26, 33]; const result = nums.map((n, i) => (n % 2 === 0 ? [n] : [])); console.log(result);Puedes usar Array.prototype.reduce
Para cada número que es par, haz lo siguiente:
Introduzca una matriz vacía en la matriz resultante si el último número no era par (es decir, era impar).
Obtenga el último grupo en la matriz resultante usando Array.prototype.at y luego push el número actual en este grupo.
const nums = [10, 12, 23, 17, 14, 15, 50, 72, 26, 33], result = nums.reduce((res, num, i) => { if (!(num & 1)) { if (!i || nums[i - 1] & 1) { res.push([]); } res.at(-1).push(num); } return res; }, []); console.log(result);Nota: He usado el operador Bitwise AND (&) para verificar si un número es par o impar, también puede usar el operador Resto (%) .