Necesito encontrar el nombre en un objeto profundamente anidado por id. ¿Quizás lodash ayude? ¿Cuál es la forma más limpia de hacerlo, si no sé cuántos objetos anidados habrá en mi matriz?
Aquí hay una matriz de ejemplo:
let x = [ { 'id': '1', 'name': 'name1', 'children': [] }, { 'id': '2', 'name': 'name2', 'children': [{ 'id': '2.1', 'name': 'name2.1', 'children': [] }, { 'id': '2.2', 'name': 'name2.2', 'children': [{ 'id': '2.2.1', 'name': 'name2.2.1' }, { 'id': '2.2.2', 'name': 'name2.2.2' } ] } ] }, { 'id': '3', 'name': 'name3', 'children': [{ 'id': '3.1', 'name': 'name3.1', 'children': [] }, { 'id': '3.2', 'name': 'name3.2', 'children': [] } ] } ];Por ejemplo, tengo una identificación "2.2" y necesito su nombre. Gracias
a partir de sus datos aquí hay una solución que puede ayudarlo a lograrlo fácilmente
function findById(array, id) { for (const item of array) { if (item.id === id) return item; if (item.children?.length) { const innerResult = findById(item.children, id); if (innerResult) return innerResult; } } } const foundItem = findById(x, "2.2"); console.log(foundItem); /* The result obtained here is: {id: '2.2', name: 'name2.2', children: Array(2)} */