Tengo un problema al combinar matrices que quería obtener y que provienen de otra matriz.
datos
datas = [ { "id": "22333", "name": "", "details": [ { "value": 1 }, { "value": 2 } ] }, { "id": "4444", "name": "", "details": [ { "value": 99 }, { "value": 66 } ] } ]Rendimiento esperado
final = [ { "value": 1 }, { "value": 2 }, { "value": 99 }, { "value": 66 } ]Código
datas.map((data) => ({ ...data.details}))Reemplace el map con flatMap .
El método
flatMapdevuelve una nueva matriz formada al aplicar una función de devolución de llamada dada a cada elemento de la matriz y luego aplanar el resultado en un nivel. Es idéntico a unmapseguido de unflatde profundidad 1, pero un poco más eficiente que llamar a esos dos métodos por separado.
const datas=[{id:"22333",name:"",details:[{value:1},{value:2}]},{id:"4444",name:"",details:[{value:99},{value:66}]}]; const flattened = datas.flatMap(obj => obj.details); console.log(flattened); Para obtener el map de números reales sobre la matriz de details .
const datas=[{id:"22333",name:"",details:[{value:1},{value:2}]},{id:"4444",name:"",details:[{value:99},{value:66}]}]; const flattened = datas.flatMap(obj => { return obj.details.map(el => el.value); }); console.log(flattened);datas.reduce((acc, val) => { return acc.concat(val.details) }, [])También puede hacer uso de reduce aquí:
arr.reduce((acc, curr) => { acc.push(...curr.details); return acc; }, []) const arr = (datas = [ { id: "22333", name: "", details: [ { value: 1, }, { value: 2, }, ], }, { id: "4444", name: "", details: [ { value: 99, }, { value: 66, }, ], }, ]); const result = arr.reduce((acc, curr) => { acc.push(...curr.details); return acc; }, []); console.log(result);