ES6 ajoute un nouveau Set de déstructuration des données, qui, comme le Set de Java, ne stocke pas les éléments en double. Set est implémenté en tant que classe et doit être nouveau avant utilisation.
var s1 = new Set() s1.add(1) s1.add(2) s1.add(3) s1.add(1) var s2 = new Set() s2.add('a') s2.add('a') // 输出1,2, 3 for (var i of s1 ) { console.log(i) } // 输出a for (var i of s2 ) { console.log(i) }
Utilisez la méthode d'ajout de Set pour ajouter des éléments ci-dessus. Les ajouts répétés ne seront pas enregistrés.
Le constructeur Set peut également accepter des tableaux comme paramètres
var s3 = new Set([1,2,3,1]) s3.size // 3
Vous pouvez voir que le numéro 1 répété n'est toujours pas inscrit. De plus, pour obtenir la longueur de l'ensemble, utilisez la taille et non la longueur.
Il est à noter que pour {} ou [], ce sont deux mêmes objets
var s4 = new Set() s4.add({}) s4.add({}) s4.size // 2
1. Ensemble de traversée (pour de)
var s1 = new Set() s1.add(1) s1.add(2) s1.add(3) // 输出1,2, 3 for (var i of s1) { console.log(i) }
2. Convertir l'ensemble en tableau
var s1 = new Set() s1.add(1) s1.add(2) // toArray var a1 = Array.from(s1) Array.isArray(a1) // true // or var a1 = [...new Set(s1)]
3. Utilisez Set pour dédupliquer les tableaux
function distinct(arr) { return Array.from(new Set(arr)) // return [...new Set(arr)] }
comme
Attributs de l'ensemble
constructeur
taille
Définir la méthode
has(val) détermine si l'élément existe
add(val) ajoute un élément
delete(val) supprimer l'élément
clear supprime tous les éléments
clés
valeurs
entrées
forEach traverse les éléments
carte
filtrer
4. Ensemble faible
WeakSet et Set ne stockent pas les éléments en double, mais il existe quelques différences
1. Stockez uniquement les éléments de type objet
ws = new WeakSet() ws.add(1)
L'erreur signalée sous FF est la suivante
2. Il n'y a que trois méthodes add/delete/clear/has, qui ne peuvent pas être parcourues, et il n'y a pas d'attribut size, etc.
ws = new WeakSet() ws.size // undefined ws.forEach // undefined
Explication de MDN
Les valeurs d'objet stockées dans l'objet WeakSet sont faiblement référencées. Si aucune autre variable ou attribut ne fait référence à la valeur de l'objet, la valeur de l'objet sera récupérée. Pour cette raison, l'objet WeakSet ne peut pas être énuméré. il n'y a aucun moyen d'obtenir tous les éléments qu'il contient
WeakSet est principalement utilisé pour stocker les nœuds DOM Lorsque ces nœuds sont supprimés du document, ils ne provoqueront pas de fuites de mémoire.
Ce qui précède représente l’intégralité du contenu de cet article, j’espère que vous l’aimerez tous.