Tengo una matriz que consta de una matriz de objetos como se muestra:
dataArr = [ { id: 1, arrObj: [ { id: 11, label: 'apple' }, { id: 12, label: 'ball' } ] }, { id: 2, arrObj: [ { id: 21, label: 'car' }, { id: 22, label: 'dog' } ] } ];Necesito extraer una matriz que consta solo de objetos arrObj:
var newArr = [ { id: 11, label: 'apple' }, { id: 12, label: 'ball' }, { id: 21, label: 'car' }, { id: 22, label: 'dog' } ];Intenté usar el método de reducción sin éxito:
dataArr.reduce((previousValue, currentValue, currentIndex, array) => { return previousValue. arrObj.concat(currentValue.arrObj) });Déjame saber cómo hacer esto. Gracias
let dataArr = [ { id: 1, arrObj: [ { id: 11, label: 'apple' }, { id: 12, label: 'ball' } ] }, { id: 2, arrObj: [ { id: 21, label: 'car' }, { id: 22, label: 'dog' } ] } ]; let result = dataArr.flatMap(e => e.arrObj) console.log(result)Estabas bastante cerca.
arrObj en su resultado, es solo una matriz.reduce() . const dataArr = [{ id: 1, arrObj: [{ id: 11, label: 'apple' }, { id: 12, label: 'ball' } ] }, { id: 2, arrObj: [{ id: 21, label: 'car' }, { id: 22, label: 'dog' } ] } ]; const newArr = dataArr.reduce((previousValue, currentValue) => { return previousValue.concat(currentValue.arrObj) }, []); console.log(newArr);Podría usar en una línea usando Spread Operator...
dataArr.reduce((previousValue, currentValue) => [...previousValue?.arrObj, ...currentValue?.arrObj]); Sugerencia: utilice ¿ Encadenamiento opcional ?. en caso de que no haya propiedad arrObj !