¿Cómo extraigo la matriz en una matriz y la estructuro para que sea una matriz completa?
Aporte:
const input = [{ categoryName: "Chinese food", tabs: [{ header: "Chicken Rice", content: "Hainanese chicken rice is a dish of poached chicken and seasoned rice" }, { header: "Dim sum", content: "large range of small Chinese dishes that are traditionally enjoyed in restaurants" } ] }, { categoryName: "Italian food", tabs: [{ header: "Pizza", content: "Dish of Italian origin consisting of a usually round" }] }, ]Salida (necesita extraer todos los encabezados para convertirse en esta matriz)
const output = [ { "categoryName": "Chinese food", "header": "Chicken Rice", }, { "categoryName": "Chinese food", "header": "Dim sum", }, { "categoryName": "Italian food", "header": "Pizza" }, ]intenté esto pero parece que no puedo agregar el nombre de categoría dentro
const getHeadersWithId = arr => ( arr.flatMap( // iterate over 'input' array and 'flat'-ten the result ({tabs}) => (tabs.map( // de-structure 'tabs' & iterate over it ({header}) => ({header}) // de-structure 'header' & retain it to intermediate-result array )) ).map( ({header}, idx) => ({ // iterate with index 'idx' id: idx+1, // generate the 'id' and store header // header from intermediate-result array element }) ) );Esto es lo que obtuve cuando ejecuté este trozo de código
[ { "id": 1, "header": "Chicken Rice" }, { "id": 2, "header": "Dim sum" }, { "id": 3, "header": "Pizza" } ]En mi opinión, no necesita el segundo map() . Simplemente use el nombre de categoryName y páselo a su map() .
Desarrollando tu código:
const input = [{ categoryName: "Chinese food", tabs: [{ header: "Chicken Rice", content: "Hainanese chicken rice is a dish of poached chicken and seasoned rice" }, { header: "Dim sum", content: "large range of small Chinese dishes that are traditionally enjoyed in restaurants" } ] }, { categoryName: "Italian food", tabs: [{ header: "Pizza", content: "Dish of Italian origin consisting of a usually round" }] }, ] const getHeadersWithId = arr => ( arr.flatMap( // iterate over 'input' array and 'flat'-ten the result ({tabs,categoryName}) => tabs.map( // de-structure 'tabs' & iterate over it ({header}) => ({header,categoryName}) // de-structure 'header' & retain it to intermediate-result array ) ) ); console.log(getHeadersWithId(input));