Maison > interface Web > js tutoriel > Comment puis-je supprimer les valeurs en double d'un tableau JavaScript ?

Comment puis-je supprimer les valeurs en double d'un tableau JavaScript ?

Linda Hamilton
Libérer: 2024-12-22 12:22:11
original
943 Les gens l'ont consulté

How Can I Remove Duplicate Values from a JavaScript Array?

Supprimer les valeurs en double du tableau JS

La duplication d'éléments dans les tableaux JavaScript est un problème courant. Pour résoudre ce problème, diverses méthodes peuvent être utilisées.

Syntaxe Set et Spread :

La solution la plus concise utilise le constructeur Set et la syntaxe spread :

uniq = [...new Set(array)];
Copier après la connexion

Approche naïve :

Pour plus de simplicité, une approche simple consiste à filtrer les éléments en fonction sur leur index :

uniqueArray = a.filter(function(item, pos) {
    return a.indexOf(item) == pos;
});
Copier après la connexion

Utilisation des tables de hachage :

Une méthode plus efficace exploite les tables de hachage, en utilisant les propriétés des objets comme clés :

function uniq(a) {
    var seen = {};
    return a.filter(function(item) {
        return seen.hasOwnProperty(item) ? false : (seen[item] = true);
    });
}
Copier après la connexion

Combinaison d'approches :

Pour gérer diverses baies, une solution hybride combine des tables de hachage pour les primitives et la recherche linéaire d'objets :

function uniq(a) {
    var prims = {"boolean":{}, "number":{}, "string":{}}, objs = [];

    return a.filter(function(item) {
        var type = typeof item;
        if(type in prims)
            return prims[type].hasOwnProperty(item) ? false : (prims[type][item] = true);
        else
            return objs.indexOf(item) >= 0 ? false : objs.push(item);
    });
}
Copier après la connexion

Tri et filtrage :

Le tri avant le filtrage offre une autre option, supprimant les doublons en fonction des éléments adjacents :

function uniq(a) {
    return a.sort().filter(function(item, pos, ary) {
        return !pos || item != ary[pos - 1];
    });
}
Copier après la connexion

Comparaison personnalisée :

Pour comparaisons uniques, un rappel peut être passé, avec des "clés" égales filtrées :

function uniqBy(a, key) {
    var seen = {};
    return a.filter(function(item) {
        var k = key(item);
        return seen.hasOwnProperty(k) ? false : (seen[k] = true);
    })
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal