Tengo una entrada como esta:
var input = [ { "inner_array": [ { "inner_data": "inner_data1" }, { "inner_data": "inner_data2" } ], "outer_data": "outer_data", } ];Y me gustaría procesarlo para que se convierta en esto.
var output = [ { "inner_data": "inner_data1", "outer_data": "outer_data", }, { "inner_data": "inner_data2", "outer_data": "outer_data", } ];En palabras: me gustaría aplanar una matriz interna, manteniendo las propiedades de la matriz externa. ¿Tiene esto una solución fácil (con funciones de matriz lambda integradas), o debería escribir una función yo mismo que maneje esto?
Puede usar .flatMap() en su matriz de input para recorrer cada objeto, junto con un .map() interno para asignar cada matriz_interna a un nuevo objeto. El nuevo objeto puede ser una combinación del valor de outer_data junto con el valor de inner_data . El método .flatMap() fusionará todos los objetos devueltos desde las llamadas .map() internas para cada objeto dentro de input en una matriz resultante:
const input = [{ "inner_array": [{ "inner_data": "inner_data1" }, { "inner_data": "inner_data2" } ], "outer_data": "outer_data", }]; const res = input.flatMap(obj => obj.inner_array.map(inner => ({ ...inner, outer_data: obj.outer_data }))); console.log(res);