Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara memadamkan data antara muka pendua dalam {}antara muka{}

Cara memadamkan data antara muka pendua dalam {}antara muka{}

PHPz
PHPzke hadapan
2024-02-09 23:12:09980semak imbas

Cara memadamkan data antara muka pendua dalam {}antara muka{}

editor php Youzi akan memperkenalkan kepada anda cara memadamkan data antara muka pendua{} dalam {}antara muka. Semasa proses pembangunan, kami sering menghadapi situasi di mana kami perlu memadamkan data pendua. Data pendua bukan sahaja menjejaskan prestasi sistem, tetapi juga menyebabkan masalah kepada pengguna. Untuk menyelesaikan masalah ini, kami boleh menggunakan beberapa teknik dan kaedah untuk mengesan dan memadam data antara muka pendua, dengan itu meningkatkan kecekapan sistem dan pengalaman pengguna. Seterusnya, kami akan memberikan anda butiran tentang cara untuk mencapai ini.

Kandungan soalan

Cara untuk mengalih keluar masukan antara muka pendua{} daripada data []antara muka{}.

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

Pada masa ini, saya mempunyai data di atas dan saya ingin mengalih keluar masukan pendua untuk nama pengguna yang sama. Jadi apakah jenis logik yang saya perlukan dalam fungsi di bawah.

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

Ada idea bagaimana untuk melakukan ini?

Saya jangkakan hasilnya harus seperti berikut:

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

Penyelesaian

Pertama sekali, saya rasa dalam kes khusus ini gunakan []interface{} 作为输入是一个坏主意。正确的输入应该是 []*entry dengan

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

atau sekurang-kurangnya map[string]interface{}.

Tetapi jika []interface{} adalah satu kemestian, maka inilah penyelesaiannya.

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
}

Atas ialah kandungan terperinci Cara memadamkan data antara muka pendua dalam {}antara muka{}. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam