Puede haber dos conjuntos de objetos.
Primero puede ser sencillo donde no hay niños
const noChildObj = [{ "id": 1, "label": ["Description"], "lines": 1, "type": "string", "precision": 2, "width": 167.8 }, { "id": 2, "label": ["Information", "Ratio"], "lines": 2, "type": "number", "precision": 2, "width": 167.8 }, { "id": 3, "label": ["Tracking", "Error"], "lines": 2, "type": "number", "precision": 2, "width": 167.8 }]Entonces, en este caso, no hay child , por lo que la propiedad 'width' está en la capa superior. El segundo es donde ocurre el anidamiento de objetos.
Entonces, cada objeto en la matriz tendrá un objeto secundario
[{ "id": "257", "label": [""], "lines": 1, "children": [{ "id": "Description", "label": ["Dates"], "lines": 1, "type": "date", "precision": null, "width": 839 }] }, { "id": "258", "label": ["Cumulative Return"], "lines": 1, "children": [{ "id": 12, "label": ["Russell 1000 Value - Price Return"], "lines": 1, "type": "number", "precision": 2, "width": 839 }] }]Aquí cada objeto tiene un objeto secundario donde existe la propiedad ancho
Este anidamiento no se limita a solo 1 nivel Puede llegar hasta 4 niveles
Entonces, mi caso de uso requiere si el niño más interno tiene un ancho indefinido o no
Me doy cuenta de que a través de la recursión, podemos atravesar y descubrir ... Pero, ¿hay alguna función que pueda hacerlo en menos líneas de código ... puede estar en lodash
Por favor ayuda
Saber solo cómo hacerlo con recursividad:
const objArray = [{ "id": 1, "label": ["Description"], "lines": 1, "type": "string", "precision": 2, "width": 167.8 }, { "id": "257", "label": [""], "lines": 1, "children": [{ "id": "Description", "label": ["Dates"], "lines": 1, "type": "date", "precision": null, "width": 839 }] }] const getWidthDeep = (el) => el.children && el.children[0] ? getWidthDeep(el.children[0]) : el.width const result = objArray.map(getWidthDeep) console.log(result)