Maison  >  Article  >  développement back-end  >  Comment supprimer les données d'interface en double dans {}interface{}

Comment supprimer les données d'interface en double dans {}interface{}

PHPz
PHPzavant
2024-02-09 23:12:09976parcourir

Comment supprimer les données dinterface en double dans {}interface{}

l'éditeur php Youzi vous présentera comment supprimer les données d'interface en double{} dans l'{}interface. Au cours du processus de développement, nous rencontrons souvent des situations dans lesquelles nous devons supprimer les données en double. Les données en double affectent non seulement les performances du système, mais causent également des problèmes aux utilisateurs. Afin de résoudre ce problème, nous pouvons utiliser certaines techniques et méthodes pour détecter et supprimer les données d'interface en double, améliorant ainsi l'efficacité du système et l'expérience utilisateur. Ensuite, nous vous donnerons les détails sur la façon d’y parvenir.

Contenu de la question

Comment supprimer les entrées d'interface{} en double des données []interface{}.

"data": [
        {
            "signstatus": true,
            "username": "yash90"
        },
        {
            "signstatus": false,
            "username": "dhananjay"
        },
        {
            "signstatus": true,
            "username": "yash90"
        }
    ],

Actuellement, j'ai les données ci-dessus et je souhaite supprimer les entrées en double pour le même nom d'utilisateur. Alors, de quel type de logique ai-je besoin dans la fonction ci-dessous.

func removeduplicateentries(listofusernamesandsignstatus []interface{}) []interface{} {
    updatedlistofusernamesandsignstatus := make([]interface{}, 0)
    for _, value := range listofusernamesandsignstatus {
        if value != nil {
        updatedlistofusernamesandsignstatus = append(updatedlistofusernamesandsignstatus, value)
        }
    }
    return updatedlistofusernamesandsignstatus
}

Une idée de comment faire ça ?

Je m'attends à ce que le résultat soit le suivant :

"data": [
        {
            "signstatus": true,
            "username": "Yash90"
        },
        {
            "signstatus": false,
            "username": "Dhananjay"
        },
    ],

Solution de contournement

Tout d'abord, je pense que dans ce cas précis, utilisez []interface{} 作为输入是一个坏主意。正确的输入应该是 []*entry avec

type entry struct {
    username   string `json:"username"`
    signstatus bool   `json:"signstatus"`
}

ou du moins map[string]interface{}.

Mais si []interface{} est un incontournable, alors voici la solution.

func removeDuplicateEntries(entries []interface{}) []interface{} {
    uniqueEntries := make([]interface{}, 0)
    usernameMap := make(map[string]bool)
    for _, entry := range entries {
        entryCast, ok := entry.(map[string]interface{})
        if !ok {
            continue
        }
        username := entryCast["username"].(string)
        if usernameMap[username] {
            continue
        }
        usernameMap[username] = true
        uniqueEntries = append(uniqueEntries, entry)
    }

    return uniqueEntries
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer