Introduction comparative à Set et Map dans es6 (avec code)
Cet article vous propose une introduction comparative à Set et Map dans es6 (avec code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Set
1. Méthode add() et attribut size
{ let list = new Set(); // add()方法向Set数据添加元素 list.add(5); list.add(7); // size属性返回数据的长度 console.log(list.size); // 2 let arr = [1, 2, 3, 4, 5]; let set = new Set(arr); console.log(set, set.size); // Set(5) {1, 2, 3, 4, 5} 5 }
2.Définir les éléments doit être unique
{ let list = new Set(); list.add(1); list.add(2); list.add(1); // 重复元素不会添加进去 console.log(list); // Set(2) {1, 2} // 数组去重 let arr = [1, 2, 3, 1, '2']; let list2 = new Set(arr); console.log(list2); // Set(4) {1, 2, 3, "2"} }
3.has(),delete(),clear()
{ let arr = ['add', 'delete', 'clear', 'has']; let list = new Set(arr); console.log(list.has('add')); // true list.delete('add'); console.log(list); // Set(3) {"delete", "clear", "has"} list.clear(); console.log(list); // Set(0) {} }
4. Set
{ let arr = ['add', 'delete', 'clear', 'has']; let list = new Set(arr); // Set结构的数据,key和value是同一个值 for (let value of list) { console.log('value', value); // 'add' 'delete' 'clear' 'has' } for (let key of list.keys()) { console.log('keys', key); // 'add' 'delete' 'clear' 'has' } for (let value of list.values()) { console.log('values', value); // 'add' 'delete' 'clear' 'has' } for (let [key, value] of list.entries()) { console.log('entries', key, value); } list.forEach(function (item) { console.log(item); // 'add' 'delete' 'clear' 'has' }); }
WeakSet
La différence entre WeakSet et Set :
Les éléments de WeakSet ne peuvent être que des objets, pas It est une valeur numérique, une chaîne, une valeur booléenne...
Les objets de WeakSet sont tous des références faibles, et le mécanisme de récupération de place ne prend pas en compte la référence du WeakSet à l'objet. Les références dans WeakSet ne sont pas comptées dans le mécanisme de récupération de place, elles ne provoqueront donc pas de fuites de mémoire. Par conséquent, WeakSet convient pour stocker temporairement un groupe d’objets et stocker des informations liées aux objets. Tant que ces objets disparaissent en externe, leurs références dans WeakSet disparaîtront automatiquement.
{ let weakList = new WeakSet(); let arg = {name: 'hhh'}; weakList.add(arg); // WeakSet的元素只能是对象 // weakList.add(2); // Uncaught TypeError: Invalid value used in weak set console.log(weakList); // WeakSet {{name: 'hhh'}} // 注意:WeakSet没有size属性,没有clear方法,不能遍历。其他的用法和Set相同 }
Map
Méthode 1.set() et méthode get()
{ let map = new Map(); let arr = ['123']; // Map的key可以是任意数据类型 map.set(arr, 456); // map.set(key, value),这里用数组作为key,添加一个值为456的元素 console.log(map.get(arr)); // 456 }
2. Une autre façon de définir Map
{ let map = new Map([['a', 123], ['b', 456]]); // 接收一个数组作为参数,数组的每一项为:[key,value] console.log(map); // Map(2) {"a" => 123, "b" => 456} console.log(map.size); // 2 console.log(map.has('b')); // true map.delete('a'); console.log(map); // Map(1) {"b" => 456} map.clear(); console.log(map); // Map(0) {} }
WeakMap
La différence entre WeakMap et Map :
WeakMap La clé peut être uniquement l'objet
Les objets référencés par les noms de clé de WeakMap sont des références faibles, et le mécanisme de garbage collection ne prend pas en compte les références à cet objet. (Notez que WeakMap ne fait que faiblement référence au nom de la clé, pas à la valeur de la clé. La valeur de la clé est toujours une référence normale.) Fondamentalement, si vous souhaitez ajouter des données à l'objet et ne souhaitez pas interférer avec le mécanisme de récupération de place, vous peut utiliser WeakMap.
{ let weakmap = new WeakMap(); let o = {}; weakmap.set(o, 123); console.log(weakmap.get(o)); // 123 // 注意:WeakMap没有size属性,没有clear方法,不能遍历。类似于Set与WeakSet的区别 }
Comparaison de l'ensemble, de la carte et du tableau, de l'objet
Comparaison de la carte et du tableau
{ // 数据结构横向对比,增 查 改 删 let map = new Map(); let array = []; // 增 map.set('t', 1); array.push({'t': 1}); console.log(map, array); // {"t" => 1} [{'t': 1}] // 查 let map_exist = map.has('t'); let array_exist = array.find(item => item.t); console.log(map_exist, array_exist); // true {t: 1} // 改 map.set('t', 2); array.forEach(item => item.t ? item.t = 2 : ''); console.log(map, array); // {"t" => 2} [{'t': 2}] // 删 map.delete('t'); let index = array.findIndex(item => item.t); array.splice(index, 1); console.log(map, array); // {} [] }
Comparaison de l'ensemble et du tableau
{ let set = new Set(); let array = []; let item = {'t': 1}; // 增 set.add(item); array.push(item); console.log(set, array); // {{'t': 1}} [{'t': 1}] // 查 let set_exist = set.has(item); let array_exist = array.find(item => item.t); console.log(set_exist, array_exist); // true {t: 1} // 改 set.forEach(item => item.t ? item.t = 2 : ''); array.forEach(item => item.t ? item.t = 2 : ''); console.log(set, array); // {{'t': 2}} [{'t': 2}] // 删 set.forEach(item => item.t ? set.delete(item) : ''); let index = array.findIndex(item => item.t); array.splice(index, 1); console.log(set, array); // {} [] }
Comparaison de la carte, de l'ensemble et de l'objet
{ let item = {t: 1}; let map = new Map(); let set = new Set(); let obj = {}; // 增 map.set('t', 1); set.add(item); obj['t'] = 1; console.log(obj, map, set); // {t: 1} Map(1) {"t" => 1} Set(1) {{t: 1}} // 查 console.log(map.has('t'), set.has(item), 't' in obj); // true true true // 改 map.set('t', 2); item.t = 2; obj['t'] = 2; console.log(obj, map, set); // {t: 2} Map(1) {"t" => 2} Set(1) {{t: 2}} // 删 map.delete('t'); set.delete(item); delete obj['t']; console.log(obj, map, set); // {} Map(0) {} Set(0) {} }
Recommandation :
Utilisez d'abord la carte, pas le tableau , en particulier Il s'agit d'une structure de données complexe
Considérez le caractère unique des données, utilisez set, abandonnez le tableau et l'obj
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

WebSocket et JavaScript : technologies clés pour réaliser des systèmes de surveillance en temps réel Introduction : Avec le développement rapide de la technologie Internet, les systèmes de surveillance en temps réel ont été largement utilisés dans divers domaines. L'une des technologies clés pour réaliser une surveillance en temps réel est la combinaison de WebSocket et de JavaScript. Cet article présentera l'application de WebSocket et JavaScript dans les systèmes de surveillance en temps réel, donnera des exemples de code et expliquera leurs principes de mise en œuvre en détail. 1. Technologie WebSocket

PHP et Vue : une combinaison parfaite d'outils de développement front-end À l'ère actuelle de développement rapide d'Internet, le développement front-end est devenu de plus en plus important. Alors que les utilisateurs ont des exigences de plus en plus élevées en matière d’expérience des sites Web et des applications, les développeurs front-end doivent utiliser des outils plus efficaces et plus flexibles pour créer des interfaces réactives et interactives. En tant que deux technologies importantes dans le domaine du développement front-end, PHP et Vue.js peuvent être considérés comme une arme parfaite lorsqu'ils sont associés. Cet article explorera la combinaison de PHP et Vue, ainsi que des exemples de code détaillés pour aider les lecteurs à mieux comprendre et appliquer ces deux éléments.

JavaScript et WebSocket : Construire un système efficace de prévisions météorologiques en temps réel Introduction : Aujourd'hui, la précision des prévisions météorologiques revêt une grande importance pour la vie quotidienne et la prise de décision. À mesure que la technologie évolue, nous pouvons fournir des prévisions météorologiques plus précises et plus fiables en obtenant des données météorologiques en temps réel. Dans cet article, nous apprendrons comment utiliser la technologie JavaScript et WebSocket pour créer un système efficace de prévisions météorologiques en temps réel. Cet article démontrera le processus de mise en œuvre à travers des exemples de code spécifiques. Nous

Tutoriel JavaScript : Comment obtenir le code d'état HTTP, des exemples de code spécifiques sont requis Préface : Dans le développement Web, l'interaction des données avec le serveur est souvent impliquée. Lors de la communication avec le serveur, nous devons souvent obtenir le code d'état HTTP renvoyé pour déterminer si l'opération a réussi et effectuer le traitement correspondant en fonction de différents codes d'état. Cet article vous apprendra comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournira quelques exemples de codes pratiques. Utilisation de XMLHttpRequest

Lors des entretiens de développement front-end, les questions courantes couvrent un large éventail de sujets, notamment les bases HTML/CSS, les bases JavaScript, les frameworks et les bibliothèques, l'expérience du projet, les algorithmes et les structures de données, l'optimisation des performances, les requêtes inter-domaines, l'ingénierie front-end, les modèles de conception et les nouvelles technologies et tendances. Les questions de l'intervieweur sont conçues pour évaluer les compétences techniques du candidat, son expérience en matière de projet et sa compréhension des tendances du secteur. Par conséquent, les candidats doivent être parfaitement préparés dans ces domaines pour démontrer leurs capacités et leur expertise.

Django est un framework d'application Web écrit en Python qui met l'accent sur un développement rapide et des méthodes propres. Bien que Django soit un framework Web, pour répondre à la question de savoir si Django est un front-end ou un back-end, vous devez avoir une compréhension approfondie des concepts de front-end et de back-end. Le front-end fait référence à l'interface avec laquelle les utilisateurs interagissent directement, et le back-end fait référence aux programmes côté serveur. Ils interagissent avec les données via le protocole HTTP. Lorsque le front-end et le back-end sont séparés, les programmes front-end et back-end peuvent être développés indépendamment pour mettre en œuvre respectivement la logique métier et les effets interactifs, ainsi que l'échange de données.

En tant que langage de programmation rapide et efficace, le langage Go est très populaire dans le domaine du développement back-end. Cependant, peu de gens associent le langage Go au développement front-end. En fait, l’utilisation du langage Go pour le développement front-end peut non seulement améliorer l’efficacité, mais également ouvrir de nouveaux horizons aux développeurs. Cet article explorera la possibilité d'utiliser le langage Go pour le développement front-end et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre ce domaine. Dans le développement front-end traditionnel, JavaScript, HTML et CSS sont souvent utilisés pour créer des interfaces utilisateur.

Django : Un framework magique capable de gérer à la fois le développement front-end et back-end ! Django est un framework d'application Web efficace et évolutif. Il est capable de prendre en charge plusieurs modèles de développement Web, notamment MVC et MTV, et peut facilement développer des applications Web de haute qualité. Django prend non seulement en charge le développement back-end, mais peut également créer rapidement des interfaces frontales et obtenir un affichage de vue flexible via un langage de modèle. Django combine le développement front-end et le développement back-end dans une intégration transparente, afin que les développeurs n'aient pas à se spécialiser dans l'apprentissage.
