Maison > Article > interface Web > A quoi sert l'ensemble es6 ?
Set est une structure de données utilisée pour stocker des données ordonnées. Les éléments de Set sont uniques et ne sont pas autorisés à stocker les mêmes éléments ; Set() peut accepter un objet itérable comme paramètre, mais cet objet itérable aura un contenu identique. supprimé, il peut donc être utilisé pour supprimer les éléments en double et empêcher "Array.from(new Set(arr))" ou "[...new Set(arr)]".
L'environnement d'exploitation de ce tutoriel : système Windows 7, ECMAScript version 6, ordinateur Dell G3.
Set
est une nouvelle structure de données fournie par ES6
. Elle est utilisée pour stocker des données ordonnées comme un tableau, mais sans la capacité de. accès aléatoire, c'est-à-dire que vous ne pouvez pas obtenir un élément spécifique via l'indexation comme un tableau. Set
是 ES6
提供的一种新的数据结构,它跟数组一样用于存储有序的数据,但是没有随机访问的能力,也就是说,不能像数组一样通过索引来获取具体的某个元素。除此以外,最重要的是,Set
中的元素具有唯一性,不允许存储相同的元素!
Set
是一个构造函数,用于实例化实例:
let set = new Set() set.add(1)//往set集合中添加元素1
除此以外,Set()
可以接受一个可迭代对象作为参数,以作为实例初始化的数据,但是会将这个可迭代对象中相同的内容去除,然而,这也是数组去重的一个方法。
let set = new Set([1,2,2,1,4,3,5]) console.log(set)//Set(5) {1, 2, 4, 3, 5}
由元素唯一性这个特点,可以利用在数组去重上:
//方法一: Array.from(new Set(arr)) //arr是待去重的数组 //方法二: [...new Set(arr)]
太酷了吧,类似的,利用这个特性还能实现字符串相同字符的去重。
[...new Set(str)].join('')
然而,上面都是通过 Set
类型元素的唯一性来实现的,那么 Set
内部是如何判断元素是否唯一的呢?它的内部使用了一个算法 Same-value-zero equality
,大致与全等运算符一致,区别在于这种算法认为 NaN
等于 NaN
。
在 Set.prototype
上,定义了一个属性 size
表示元素的个数。
let set = new Set([1,2,2,1,4,3,5]) console.log(set.size)//5
Set
实例的方法可以分为两类:操作方法和遍历方法。
Set.prototype.add(value)
—— 添加某个值到 Set
的末尾,返回 Set
本身。Set.prototype.delete(value)
—— 删除某个值,返回布尔值,表示是否删除成功。Set.prototype.has(value)
—— 返回一个布尔值,表示该值是否为 Set
的元素。Set.prototype.clear()
—— 清除所有成员,没有返回值。值得一提的是,add()
方法的返回是 Set
本身,所以你应该能想到链式调用:
let set = new Set() set.add(1).add(2).add(3)
Set.prototype.keys()
—— 返回键名的遍历器Set.prototype.values()
—— 返回键值的遍历器Set.prototype.entries()
—— 返回键值对的遍历器Set.prototype.forEach()
—— 使用回调函数遍历元素由于 Set
结构没有键名,只有键值(或者说键名和键值是同一个值),所以 keys
方法和 values
方法的行为完全一致。
WeakSet
WeakSet
是 Set
的升级版,主要有两个区别:
WeakSet
只能存储引用类型,不能储存基本类型数据。WeakSet
中的引用类型都是弱引用。首先,第一点很好理解,就是不能存储基本类型的数据:
const ws = new WeakSet() ws.add(1)//报错,Invalid value used in weak set
然后第二点,WeakSet
中的对象都是弱引用。也就意味着垃圾回收机制不会考虑 WeakSet
对该对象的引用,一旦在外部引用计数为0,那么就等着被垃圾回收机制处理。所以,WeakSet
适合临时存放一组对象。
由于这个特征,WeakSet
中的成员是不适合引用的,因为它很可能会随时被清理,然而,ES6
规定它是不可遍历的。
WeakSet
中的方法也跟上面提到的 Set
基本一致,但是它没有 size
De plus, le plus important est que les éléments de Set
sont uniques et que les mêmes éléments ne peuvent pas être stockés !
Set
est un constructeur utilisé pour instancier une instance : rrreeeDe plus, Set()
peut accepter un objet itérable en tant que paramètre, comme données d'initialisation d'instance, mais le même contenu dans cet objet itérable sera supprimé. Cependant, il s'agit également d'une méthode de déduplication de tableau. rrreee
Set
, alors comment Set
détermine-t-il en interne si un élément est unique ? Il utilise un algorithme Égalité de même valeur-zéro
en interne, qui est à peu près le même que l'opérateur de congruence. La différence est que cet algorithme considère NaN
comme égal à size
est défini pour représenter le numéro d'élément. 🎜rrreeeSet
Les méthodes d'instance peuvent être divisées en deux catégories : les méthodes d'opération et les méthodes de traversée. 🎜Set.prototype.add(value)
- Ajoutez une valeur à Set
fin de Set
lui-même. Set.prototype.delete(value)
- Supprime une valeur et renvoie une valeur booléenne pour indiquer si la suppression a réussi. Set.prototype.has(value)
- Renvoie une valeur booléenne indiquant si la valeur est un élément de Set
. Set.prototype.clear()
- Efface tous les membres, aucune valeur de retour. add()
est Set
lui-même, vous devriez donc pouvoir penser à des appels en chaîne : 🎜rrreee Set.prototype.keys()
- Renvoie un traverseur de noms de clésSet.prototype.values()
- Renvoie un traverseur de paires clé-valeurSet.prototype.entries()
- Renvoie un traverseur de clé -Paires de valeurs Set.prototype.forEach()
—— Utiliser la fonction de rappel pour parcourir les éléments Set
La structure n'a pas de nom de clé, seule la valeur de la clé (ou le nom de la clé et la valeur de la clé sont la même valeur), donc la méthode keys
se comporte exactement de la même manière que les values
méthode. 🎜🎜🎜3. WeakSet
🎜🎜🎜WeakSet
est une version améliorée de Set
. Il y a deux différences principales : 🎜WeakSet
ne peut stocker que des types de référence, pas des données de type de base. WeakSet
sont tous des références faibles. WeakSet
sont toutes des références faibles. Cela signifie que le mécanisme de garbage collection ne prendra pas en compte la référence de WeakSet
à l'objet. Une fois que le nombre de références externes atteint 0, il attendra d'être traité par le mécanisme de garbage collection. Par conséquent, WeakSet
convient pour stocker temporairement un groupe d'objets. 🎜🎜En raison de cette fonctionnalité, les membres de WeakSet
ne conviennent pas comme référence car ils sont susceptibles d'être nettoyés à tout moment. Cependant, ES6
stipule qu'il n'est pas traversable. . 🎜🎜Les méthodes de WeakSet
sont fondamentalement les mêmes que celles du Set
mentionné ci-dessus, mais elles n'ont pas l'attribut size
ni la méthode traverseur. 🎜🎜【Recommandations associées : 🎜Tutoriel vidéo javascript🎜, 🎜Vidéo de programmation🎜】🎜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!