J'ai un tableau et chaque élément est un objet avec des ID uniques. Certains éléments peuvent également avoir des enfants, et il peut y avoir un tableau enfants dans un tableau enfants. J'essaye de choisir un article en utilisant un Id.Recherche d'un objet dans un tableau d'objets profondément imbriqués récursivement
const array = [
{
uuid: '40E75F3DE56B4B11B3AFBDE46785737B'
}, {
uuid: '9CEF74766BBB4B9682B7817B43CEAE48'
}, {
uuid: '34F209A883D3406FBA6BACD9E07DB1D9',
children: [{
uuid: 'F429C51BF01C405DA517616E0E16DE4E',
children: [{
uuid: '8823CFCE7D4645C68991332091C1A05C'
}, {
uuid: '58A9345E881F48C980498C7FFB68667D'
}]
}]
}, {
uuid: '152488CC33434A8C9CACBC2E06A7E535'
}, {
uuid: '9152B3DEF40F414BBBC68CACE2F5F6E4'
}, {
uuid: 'B9A39766B17E4406864D785DB6893C3D'
},
{
uuid: '3J4H4J5HN6K4344D785DBJ345HSSODF',
children: [
{
uuid: 'EAB14DD72DA24BB88B4837C9D5276859'
},
{
uuid: 'FFA80D043380481F8835859A0839512B'
},
{
uuid: '9679687190354FA79EB9D1CA7B4962B1'
}
]
}
]
Le code ci-dessous fonctionne pour un tableau simple sans enfants. J'ai besoin d'une fonction, ou un module lodash qui peut récursive rechercher le tableau entier et renvoyer l'objet (élément du tableau)
findContainingObject(array, uuid) {
let result = [];
result = array.filter(item => {
return item.uuid === uuid
})
return result;
}
Résultats attendus:
findContainingObject(array, '40E75F3DE56B4B11B3AFBDE46785737B')
{
uuid: '40E75F3DE56B4B11B3AFBDE46785737B'
}
findContainingObject(array, '34F209A883D3406FBA6BACD9E07DB1D9')
{
uuid: '34F209A883D3406FBA6BACD9E07DB1D9',
children: [{
uuid: 'F429C51BF01C405DA517616E0E16DE4E',
children: [{
uuid: '8823CFCE7D4645C68991332091C1A05C'
}, {
uuid: '58A9345E881F48C980498C7FFB68667D'
}]
}]
}
findContainingObject(array, '58A9345E881F48C980498C7FFB68667D')
{
uuid: '58A9345E881F48C980498C7FFB68667D'
}
Nous vous remercions de la solution. J'allais dans le même sens, mais ne serait pas cher si je devais regarder 'B9A39766B17E4406864D785DB6893C3D'? –
@VamshiGudipati Oui, ce serait cher. D'où vient le tableau d'origine? API côté serveur? Base de données? Avez-vous accès à cela? –
C'est la sortie d'une interface glisser-déposer que nous avons créée et je n'ai aucun contrôle sur les données qui arrivent. J'écris un compilateur pour convertir ces données en une autre forme de données –