0
votes

Dupliquer des articles de filtrage déroulant de API - ReactJS

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>


2 commentaires

Avez-vous des entrées dupliquées dans stat.tabitems aussi?


Oui, parce que c'est un tableau que j'utilise state.tabitems aussi un peu plus loin.


3 Réponses :


0
votes

Retirez les duplicats

const uniqueItems = [];
tabItems.map(item => {
    if (uniqueItems.indexOf(item.documentType) === -1) {
        uniqueItems.push(item.documentType)
    }
});


this.setState({
    tabItems: uniqueItems 
}, () => {


1 commentaires

Il n'y a pas de valeur après la fonction flèche élément =>



0
votes

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]);
    }
}


1 commentaires

@Pandamastr pouvez-vous essayer console.log (tabitems); après la vérification de la boucle pour voir s'il est en réalité filtré



0
votes

Vous pouvez utiliser Set et Le EXPLACER OPERATEUR de ES6, car < EM> Set ne permet pas des doublons et retirera du tableau si trouvé:

uniqueItems = [... Nouveau ensemble (Tabitems)];

ou plus court:

[Nouveau Set (Tabitems)]. Carte (élément => { // faire des trucs });

ou vous pouvez faire .Filter avant, puis .map:

uniqueItems = tabitems.filter ((élément, index) { renvoyer a.indexof (index) == index; });


1 commentaires

Oui, mais je reçois un tableau vide