ES6 - la recherche de données dans des tableaux imbriqués
Dans l'ES6 à l'aide de find
ou filter
je suis très à l'aise à itérer pour trouver un élément dans un tableau à l'aide d'une valeur.
Cependant, je vais essayer d'obtenir une valeur d'un tableau parent basée sur une valeur d'un tableau imbriqué.
Par exemple, dans cette structure de données:
products: [
{
id: 01,
items: [
{
id: 01,
name: 'apple'
},
{
id: 02,
name: 'banana'
},
{
id: 03,
name: 'orange'
}
]
},
{
id: 02,
items: [
{
id: 01,
name: 'carrot'
},
{
id: 02,
name: 'lettuce'
},
{
id: 03,
name: 'peas'
}
]
},
{
id: 03,
items: [
{
id: 01,
name: 'eggs'
},
{
id: 02,
name: 'bread'
},
{
id: 03,
name: 'milk'
}
]
}
]
Si je sais que les name
ou id
de l'objet milk
, est-il un moyen de trouver l'id de l'élément imbriqué à l'intérieur?
Actuellement j'ai ceci:
products.find((product) => {
product.find((prod) => {
return prod.name === 'milk';
});
});
Qui retourne uniquement l'objet contenant milk
.
OriginalL'auteur Toby | 2016-10-13
Vous devez vous connecter pour publier un commentaire.
Vous devez les retourner quelque chose à partir de la fonction de rappel de l'extérieur
find
. En fait, pour l'intérieur itération, vous ne devriez pas utiliserfind
mais plutôtqui retourne un booléen pour savoir si un élément correspondant à la condition existe au sein de la arrray:
ou en court:
Ensuite, vérifiez si
find
trouvé quelque chose (pasnull
!) et obtenir son.id
, le résultat devrait être03
. Alternativement, vous pouvezfilter
pour les produits à base de lait comme un élément, puis une carte de tous les résultats de leur id:some
avant.. mais en utilisant cela, comment pourrais-je retourner l'id de l'élément extérieur? Par exemple, pour l'élémentmilk
l'élément contenant l'id de3
. Merci!juste petite remarque, le
some
devrait arriver surproduct.items
, pas surproduct
directementle code Bergi donné, vous trouverez votre objet et tout ce que vous avez à faire est d'appeler
.id
:const yourId = products.find(product => product.items.some(item => item.name === 'milk')).id
parfait, merci!
OriginalL'auteur Bergi