Maison > interface Web > js tutoriel > le corps du texte

Explication détaillée de Set/WeakSet dans les compétences ECMAScript6_javascript

WBOY
Libérer: 2016-05-16 15:55:28
original
1192 Les gens l'ont consulté

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)
}
Copier après la connexion

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
Copier après la connexion

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

Copier après la connexion

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)
}

Copier après la connexion

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)] 

Copier après la connexion

3. Utilisez Set pour dédupliquer les tableaux

function distinct(arr) {
  return Array.from(new Set(arr))
// return [...new Set(arr)]
}
Copier après la connexion

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)
Copier après la connexion

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
Copier après la connexion

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.

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!