Je travaille sur un projet qui vous permet de trier les éléments en fonction des tags sélectionnés. Voici le problème sur lequel j'ai été bloqué:Filtrage à travers 3 tableaux pour trier les données
J'ai un tableau d'éléments. Chaque élément est un objet qui a une propriété de balises. La propriété tags est un tableau des tags associés à cet élément.
Il y a un composant déroulant qui vous permet de sélectionner les balises vers lesquelles vous souhaitez réduire vos résultats. Vous pouvez avoir plusieurs tags sélectionnés à la fois. La liste déroulante est un tableau de tags. J'ai tout fonctionné excepté pour rendre les articles basés sur les étiquettes choisies.
données par exemple (stockées dans Redux):
const obj = {
const items = [
{ id: 1, name: "car", tags: ["technology", "vehicle"] },
{id: 2, name: "bike", tags: ["outdoors"] }
]
const dropdownValues = ["vehicle","indoor","technology", "outdoors"]}
Le code ci-dessous rend tous mes articles sur la page.
class ItemCardList extends Component{
render(){
let data = this.props.itemsData; //this is all of the items data
let tags = this.props.tags; //these are the selected dropdown tags stored in redux
return (
<Masonry>
{data.map((item) => {
return <div><ItemCard key={item.id} item={item}/></div>
})}
</Masonry>
)
}
}
const mapStateToProps = state => ({
tags: state.items.tags,
itemsData: state.items.itemsData,
});
export default connect(mapStateToProps)(ItemCardList);
Ma pensée va dans le sens de ce (que je sais est vraiment déroutant):
{data.filter((item) => item.tags.map(tag => tag == tagsArray.map(tagArr => tagArr))
Comment puis-je rendre uniquement les éléments avec les balises sélectionnés? Suis-je en train de penser cela? Est-ce qu'il y a une meilleure approche?
S'il vous plaît laissez-moi savoir s'il y a de toute façon je peux mieux expliquer cette question. Je vous remercie!
Exactement ce dont j'avais besoin. Merci Duncan! –
Pas de problème! Bonne chance pour votre projet! –