Hay una tarea. Se recibe un flujo de datos y es necesario invertirlo. Cada segmento tiene una longitud de 8 bits, lo que significa que el orden de estos segmentos debe invertirse, por ejemplo:
11111111 00000000 00001111 10101010
debe convertirse:
10101010 00001111 00000000 11111111
No entendí la tarea y para resolver el problema, decido hacer un objeto. Luego haga una matriz y transforme la entrada. Luego ordene y y obtenga el resultado (en mi cabeza, debería funcionar así, pero...). Pero a veces lo obtengo y, a veces, forEach devuelve indefinido, y no sé por qué. ¿Dónde estoy equivocado? ¿Y por qué? Entiendo que esta no es una buena manera de resolver el problema. Encuentro otra forma, pero quiero saber por qué a veces me quedo indefinido.
function dataReverse(data) { let x = { '11111111': 1, '00000000':2, '00001111':3, '10101010':4, '1': '11111111', '2': '00000000', '3': '00001111', '4': '10101010', } let y = [] data = data.join('').match(/\d{8}/g) data.forEach(a=> y.push(x[a])) y = y.sort((a,b)=> b - a) return y.map(a=> x[a]).join('').split('').map(a=> Number(a)) }