| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Set | [Back] [Original] |
Get to know MDN better
Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.
Cette fonctionnalit est bien tablie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
* Certaines parties de cette fonctionnalit peuvent bnficier de prise en charge variables.
Un objet Set permet de stocker un ensemble de valeurs uniques de n'importe quel type, qu'il s'agisse de valeurs primitives ou d'objets.
Les objets Set sont des ensembles de valeurs. Il est possible d'itrer sur les lments contenus dans l'objet Set dans leur ordre d'insertion. Une valeur donne ne peut apparatre qu'une seule fois par Set, elle y est unique.
Chaque valeur d'un Set doit tre unique, il faut donc tester l'galit des valeurs contenues. Dans une version antrieure de la spcification ECMAScript, cette galit n'tait pas la mme que celle de l'oprateur ===. Notamment, pour les objets Set, +0 (qui, selon l'galit stricte, est gal -0) et -0 taient des valeurs diffrentes. Cela a toutefois t chang avec la dernire version d'ECMAScript 2015 (ES6). Voir le tableau de compatibilit ci-aprs quant la prise en charge de l'galit des cls pour 0 et -0.
NaN et undefined peuvent tre enregistrs dans un objet Set. NaN est considr comme NaN (bien que NaN !== NaN).
Set dispose d'une mthode has() qui permet de vrifier si une valeur est contenue dans l'objet Set et qui utilise une approche qui est, en moyenne, plus rapide que de tester les lments qui ont t prcdemment ajouts Set. Cette mthode est, en moyenne, plus rapide que la mthode Array.prototype.includes() qui s'applique aux objets Array lorsque la longueur (length) du tableau est gale celle de l'objet Set (size).
Set()Cre un nouvel objet Set.
get Set[@@species]La fonction de construction utilise pour crer des objets drivs.
Set.prototype.sizeRenvoie le nombre de valeurs contenues dans l'objet Set.
Set.prototype.add(valeur)Ajoute une valeur l'objet Set et renvoie l'objet Set avec la valeur ajoute.
Set.prototype.clear()Supprime tous les lments de l'objet Set.
Set.prototype.delete(valeur)Supprime l'lment associ la valeur en argument et renvoie un boolen indiquant si l'lment a t retir avec succs. Par la suite, Set.prototype.has(valeur) renverra false.
Set.prototype.has(valeur)Renvoie un boolen indiquant si la valeur fournie en argument est prsente dans l'ensemble reprsent par l'objet Set.
Set.prototype[@@iterator]()Renvoie un nouvel itrateur fournissant les valeurs de chaque lment de l'objet Set, selon leur ordre d'insertion.
Set.prototype.values()Renvoie un nouvel itrateur fournissant les valeurs de chaque lment de l'objet Set, selon leur ordre d'insertion.
Set.prototype.keys()Un alias pour Set.prototype.values().
Set.prototype.entries()Renvoie un nouvel objet itrateur qui contient un tableau [valeur, valeur] pour chaque lment de l'objet Set, selon leur ordre d'insertion.
Il s'agit d'une mthode analogue celle disponible pour Map, c'est pour a qu'on a le doublonnement de la valeur la place de la cl.
Set.prototype.forEach(fnRappel[, thisArg])Appelle la fonction fnRappel une fois pour chaque valeur prsente dans l'objet Set, selon leur ordre d'insertion. Si le paramtre thisArg est fourni, sa valeur sera utilise comme valeur pour this pour chaque appel de fnRappel.
Setconst monSet = new Set();
monSet.add(1); // { 1 }
monSet.add(5); // { 1, 5 }
monSet.add(5); // { 1, 5 }
monSet.add("du texte"); // { 1, 5, 'du texte' }
const o = { a: 1, b: 2 };
monSet.add(o);
monSet.add({ a: 1, b: 2 });
// o fait rfrence un objet diffrent
// il n'y a pas de problme pour cet ajout
monSet.has(1); // true
monSet.has(3); // false, 3 n'a pas t ajout l'ensemble
monSet.has(5); // true
monSet.has(Math.sqrt(25)); // true
monSet.has("Du Texte".toLowerCase()); // true
monSet.has(o); // true
monSet.size; // 5
monSet.delete(5); // retire 5 du set
monSet.has(5); // false, 5 a t retir de l'ensemble
monSet.size; // 4, on a retir une valeur de l'ensemble
console.log(monSet);
// affiche Set(4) [ 1, "du texte", {}, {} ] pour Firefox
// affiche Set(4) { 1, "du texte", {}, {} } pour Chrome
// On itre sur les diffrents lments de l'ensemble
// ici on affiche : 1, "du texte", {"a": 1, "b": 2}, {"a": 1, "b": 2}
for (let item of monSet) console.log(item);
// ici on affiche les cls de l'ensemble : 1, "du texte", {"a": 1, "b": 2}, {"a": 1, "b": 2}
for (let item of monSet.keys()) console.log(item);
// ici on affiche les valeurs de l'ensemble : 1, "du texte", {"a": 1, "b": 2}, {"a": 1, "b": 2}
for (let item of monSet.values()) console.log(item);
// ici on affiche les cls de l'ensemble : 1, "du texte", {"a": 1, "b": 2}, {"a": 1, "b": 2}
// (ici, les cls et les valeurs sont les mmes)
for (let [cl, valeur] of monSet.entries()) console.log(cl);
// Une mthode de conversion avec Array.from
const monTableau = Array.from(monSet); // [1, "du texte", {"a": 1, "b": 2}, {"a": 1, "b": 2}]
// Cela fonctionnera galement dans un document HTML
monSet.add(document.body);
monSet.has(document.querySelector("body")); // true
// convertir un tableau (Array) en ensemble (Set) et vice versa
const monSet2 = new Set([1, 2, 3, 4]);
monSet2.size; // 4
[...monSet2]; // [1, 2, 3, 4]
// L'intersection peut tre calcule avec
const intersection = new Set([...set1].filter((x) => set2.has(x)));
// La diffrence pourra tre simule avec
const diffrence = new Set([...set1].filter((x) => !set2.has(x)));
// On peut itrer sur les entres d'un ensemble avec forEach
mySet.forEach(function (value) {
console.log(value);
});
// 1
// 2
// 3
// 4
function isSuperset(set, subset) {
for (let elem of subset) {
if (!set.has(elem)) {
return false;
}
}
return true;
}
function union(setA, setB) {
let _union = new Set(setA);
for (let elem of setB) {
_union.add(elem);
}
return _union;
}
function intersection(setA, setB) {
let _intersection = new Set();
for (let elem of setB) {
if (setA.has(elem)) {
_intersection.add(elem);
}
}
return _intersection;
}
function symmetricDifference(setA, setB) {
let _difference = new Set(setA);
for (let elem of setB) {
if (_difference.has(elem)) {
_difference.delete(elem);
} else {
_difference.add(elem);
}
}
return _difference;
}
function difference(setA, setB) {
let _difference = new Set(setA);
for (let elem of setB) {
_difference.delete(elem);
}
return _difference;
}
// Exemples
const setA = new Set([1, 2, 3, 4]);
const setB = new Set([2, 3]);
const setC = new Set([3, 4, 5, 6]);
isSuperset(setA, setB); // => true
union(setA, setC); // => Set [1, 2, 3, 4, 5, 6]
intersection(setA, setC); // => Set [3, 4]
symmetricDifference(setA, setC); // => Set {1, 2, 5, 6}
difference(setA, setC); // => Set [1, 2]
Arraylet monTableau = ["valeur1", "valeur2", "valeur3"];
// On peut utiliser le constructeur Set pour transformer
// un Array en Set
let monSet = new Set(monTableau);
monSet.has("valeur1"); // renvoie true
// Et utiliser l'oprateur de dcomposition pour
// transformer un Set en Array.
console.log([...monSet]); // affichera la mme chose que monTableau
const nombres = [2, 3, 4, 4, 2, 2, 2, 4, 4, 5, 5, 6, 6, 7, 5, 32, 3, 4, 5];
console.log([...new Set(nombres)]);
// affichera [2, 3, 4, 5, 6, 7, 32]
Stringlet texte = "India";
const monSet = new Set(texte);
// Set(5) {'I', 'n', 'd', 'i', 'a'}
monSet.size;
// 5
// Sensibilit la casse
new Set("Firefox");
// Set(7) { "F", "i", "r", "e", "f", "o", "x" }
new Set("firefox");
// Set(6) { "f", "i", "r", "e", "o", "x" }
Set pour vrifier l'unicit des valeurs d'une listeconst tableau = Array.from(document.querySelectorAll("[id]")).map(function (e) {
return e.id;
});
const set = new Set(tableau);
console.assert(set.size == tableau.length);
| Spcification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-set-objects |
Cette page a t modifie le 24 juin 2025 par les contributeurices du MDN.
SetObject/FunctionObject.prototype.__defineGetter__()Object.prototype.__defineSetter__()Object.prototype.__lookupGetter__()Object.prototype.__lookupSetter__()Object.prototype.hasOwnProperty()Object.prototype.isPrototypeOf()Object.prototype.propertyIsEnumerable()Object.prototype.toLocaleString()Object.prototype.toString()Object.prototype.valueOf()Certaines parties de ce contenu sont protges par le droit d'auteur 19982026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.
| Web Proxy Viewer | New URL | Original Page |