J'ai créé mon menu déroulant, mais malheureusement, il reçoit une valeur dupliquée de l'API. Je reçois une certaine quantité de documents de la BE et certains des mêmes noms ont le même nom, donc dans ma liste déroulante, je reçois une duplication des noms. Mon code ressemble à ceci:
My Fonction P>
<RBS.Dropdown>
<RBS.Dropdown.Toggle id="dropdown-invoice-header">
{translations.type}
</RBS.Dropdown.Toggle>
<RBS.Dropdown.Menu>
{this.state.tabItems.map(item => (
<RBS.Dropdown.Item >{item.documentType}</RBS.Dropdown.Item>
))}
</RBS.Dropdown.Menu>
</RBS.Dropdown>
3 Réponses :
Retirez les duplicats
const uniqueItems = [];
tabItems.map(item => {
if (uniqueItems.indexOf(item.documentType) === -1) {
uniqueItems.push(item.documentType)
}
});
this.setState({
tabItems: uniqueItems
}, () => {
Il n'y a pas de valeur après la fonction flèche élément => code>
Vous pouvez filtrer les duplicats avant de définir l'état:
for (let i = startIndex; i <= endIndex; i++) {
if (this.state.items[i] && tabItems.indexOf(this.state.items[i]) === -1) {
tabItems.push(this.state.items[i]);
}
}
@Pandamastr pouvez-vous essayer console.log (tabitems); code> après la vérification de la boucle pour voir s'il est en réalité filtré
Vous pouvez utiliser Set et Le EXPLACER OPERATEUR de ES6, car < EM> Set em> ne permet pas des doublons et retirera du tableau si trouvé: p>
ou plus court: p>
ou vous pouvez faire .Filter avant, puis .map: p>
uniqueItems = [... Nouveau ensemble (Tabitems)]; Code> P>
[Nouveau Set (Tabitems)]. Carte (élément => {
// faire des trucs
}); code> p>
uniqueItems = tabitems.filter ((élément, index) {
renvoyer a.indexof (index) == index;
}); code> p>
Oui, mais je reçois un tableau vide
Avez-vous des entrées dupliquées dans
stat.tabitems code> aussi?Oui, parce que c'est un tableau que j'utilise
state.tabitems code> aussi un peu plus loin.