Tengo una matriz de matrices, y quiero mapearla y solo devolver los valores de las matrices, pero cuando la mapeo y registro el resultado, es solo una matriz y no sé cómo mapear mi matriz y usarlo en otros lugares.
const arr = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], ]; const arrMap = arr.map((it) => it.map((itm) => itm)); console.log(arrMap); //what I expected 1,2,3,4,5,6 , ... //what I got [Array(3), Array(3), Array(3)]En realidad, necesito los valores para usarlos en otro lugar, pero no sé qué hacer. También usé la función para esto, pero cuando devuelvo los valores y los registro, no está definido:
const arr = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], ]; const arrMap = (arr) => { arr.forEach((element) => { console.log(element); //In here, everything works fine return element; }); }; console.log(arrMap); //what I got undefinedUsar mapa plano -
const arr = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], ]; const arrMap = arr.flatMap(m => m); console.log(arrMap);Use plano si solo desea aplanar la matriz:
const arr = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], ]; console.log(arr.flat());Use flatMap si quiere hacer algo con cada elemento antes de que la matriz se aplane.
const arr = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], ]; const arrMap = arr.flatMap((el) => { el.forEach((n) => console.log(n)); return el; }); console.log(arrMap);Por qué no funcionará: se supone que map() se ejecuta en cada elemento de una matriz y devuelve una matriz transformada de la misma longitud . Tiene tres elementos en su matriz de entrada y siempre obtendrá tres elementos en su matriz asignada.
Sus expectativas pueden cumplirse modificando su código con forEach() si lo desea. Con forEach() no se devuelve nada y tendrá que comenzar con una variable de matriz separada. El siguiente código usa ...
const arr = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], ]; let arrMap = []; arr.forEach((it) => arrMap.push(...it)); console.log(arrMap); Pero flatMap() ya está ahí:
const arr = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], ]; let ans = arr.flatMap(x => x); console.log(ans);