Tengo bytes entrantes de matrices una vez por vez. Se parece a esto
[10,12,34,58,62]
[83,33,23,44,13]
[10,12,34,58,62]
[34, 77,54,23,87]
[83,33,23,44,13]
[10,12,34,58,62]
[83,33,23,44,66]
[13] …continúa.
Entonces, representa cada matriz cada vez. Necesitaba que se renderizaran como
[10,12,34,58,62,83,33,23,44,13]
[10,12,34,58,62,34,77,54,23,87,83,33,23,44,13]
[10,12,34,58,62,83,33,23,44,66,13].
El primer elemento sera 10 y el ultimo 13. Alguien me puede ayudar con el codigo? Gracias por adelantado.
Si sus bytes entrantes son una matriz 2d, intente esto.
let arr = [ [10, 12, 34, 58, 62], [83, 33, 23, 44, 13], [10, 12, 34, 58, 62], [34, 77, 54, 23, 87], [83, 33, 23, 44, 13], [10, 12, 34, 58, 62], [83, 33, 23, 44, 66], [13] ] let openedArr = [] for (let value of arr) { openedArr = [...openedArr, ...value] } let resultArr = [] let child = [] for (let value of openedArr) { child.push(value) if (value == 13) { resultArr.push(child) child = [] } } console.log(resultArr)Explicación
// @param {accumulator} is array of array of numbers // @param {chunk} is the array of numbers // @return {accumulator} const process_bytes = (accumulator, chunk) => { if (accumulator && accumulator.length) { if (chunk && chunk.length) { if (chunk[0] === 10) { return [...accumulator, chunk]; } else { return [...accumulator.slice(0, accumulator.length - 1), [...accumulator[accumulator.length - 1], ...chunk]]; } } } return chunk && chunk.length && [chunk] || []; };Suposición
El siguiente código sigue los datos de entrada proporcionados y la salida esperada en el OP
const process_bytes = (accumulator, chunk) => { if (accumulator && accumulator.length) { if (chunk && chunk.length) { if (chunk[0] === 10) { return [...accumulator, chunk]; } else { return [...accumulator.slice(0, accumulator.length - 1), [...accumulator[accumulator.length - 1], ...chunk]]; } } } return chunk && chunk.length && [chunk] || []; }; const testData = [ [10, 12, 34, 58, 62], [83, 33, 23, 44, 13], [10, 12, 34, 58, 62], [34, 77, 54, 23, 87], [83, 33, 23, 44, 13], [10, 12, 34, 58, 62], [83, 33, 23, 44, 66] ]; let processed_bytes = []; testData.forEach(x => { processed_bytes = process_bytes(processed_bytes, x); }); console.log(processed_bytes); WYSIWYG => WHAT YOU SHOW IS WHAT YOU GET