Maison interface Web js tutoriel Une brève discussion sur la structure des données cartographiques des compétences es6 javascript_javascript

Une brève discussion sur la structure des données cartographiques des compétences es6 javascript_javascript

Dec 15, 2017 pm 02:06 PM
javascript js 数据结构

Cet article présente principalement la structure des données cartographiques d'es6 javascript L'éditeur pense que c'est plutôt bon. Je vais maintenant partager avec vous la source JavaScript. code. Également comme référence pour tout le monde. Si vous êtes intéressé par JavaScript, veuillez suivre l'éditeur pour y jeter un œil

Cet article présente la structure des données cartographiques du javascript es6 et la partage avec tout le monde, comme suit :

Structure de la carte Le but et l'utilisation de base de

L'objet JavaScript (Object) est essentiellement une collection de paires clé-valeur (structure de hachage), mais traditionnellement uniquement des chaînes comme clé. Cela entraîne de grandes limites à son utilisation.


var data = {}; 
var element = document.getElementById('myp'); 
data[element] = 'metadata'; 
data['[object HTMLpElement]'] // "metadata"
Copier après la connexion


L'intention originale du code ci-dessus est d'utiliser un nœud DOM comme clé des données de l'objet , mais comme l'objet n'accepte que les caractères, String est utilisé comme nom de clé, donc l'élément est automatiquement converti en chaîne [objet HTMLpElement].


Pour résoudre ce problème, ES6 fournit la structure de données Map. Il est similaire à un objet et constitue également une collection de paires clé-valeur, mais la portée de « clé » ne se limite pas aux chaînes. Différents types de valeurs (y compris les objets) peuvent être utilisés comme clés. En d’autres termes, la structure Object fournit la correspondance « chaîne-valeur » et la structure Map fournit la correspondance « valeur-valeur », qui est une implémentation plus complète de la structure Hash. Si vous avez besoin d'une structure de données « clé-valeur », Map est plus adaptée que Object.



var m = new Map(); 
var o = { 
 p: 'Hello World' 
}; 
m.set(o, 'content') 
m.get(o) // "content" 
m.has(o) // true 
m.delete(o) // true 
m.has(o) // false
Copier après la connexion


Le code ci-dessus utilise la méthode set pour traiter l'objet o comme une clé de m, puis utilise get pour lire la clé, puis utilisez la

méthode delete pour supprimer la clé. En tant que
constructeur, Map peut également accepter un tableau comme paramètre. Les membres de ce tableau sont des tableaux représentant des paires clé-valeur.


var map = new Map([ 
 ['name', ' 张三 '], 
 ['title', 'Author'] 
]); 
map.size // 2 
map.has('name') // true 
map.get('name') // " 张三 " 
map.has('title') // true 
map.get('title') // "Author"
Copier après la connexion


Le code ci-dessus spécifie deux clés, nom et titre, lors de la création d'une nouvelle instance de Map.


Le constructeur Map accepte un tableau comme paramètre et exécute en fait l'algorithme suivant.


var items = [ 
 ['name', ' 张三 '], 
 ['title', 'Author'] 
]; 
var map = new Map(); 
items.forEach(([key, value]) => map.set(key, value));
Copier après la connexion


Dans l'exemple suivant, la chaîne true et le booléen true sont deux clés différentes.



var m = new Map([ 
 [true, 'foo'], 
 ['true', 'bar'] 
]); 
m.get(true) // 'foo' 
m.get('true') // 'bar'
Copier après la connexion


Si la même clé est attribuée plusieurs fois, la valeur suivante écrasera la valeur précédente.


let map = new Map(); 
map 
 .set(1, 'aaa') 
 .set(1, 'bbb'); 
map.get(1) // "bbb"
Copier après la connexion


Le code ci-dessus attribue deux valeurs consécutives à la clé 1, et cette dernière valeur écrase la valeur précédente.


Si une clé inconnue est lue, undefined est renvoyé.


new Map().get('asfddfsasadf') 
 // undefined
Copier après la connexion


Notez que seules les références au même objet seront considérées comme la même clé par la structure Map. Soyez très prudent à ce sujet.



var map = new Map(); 
map.set(['a'], 555); 
map.get(['a']) // undefined
Copier après la connexion


Les méthodes set et get du code ci-dessus semblent être pour la même clé, mais en fait c'est Les adresses mémoire des deux valeurs sont différentes, donc la méthode get ne peut pas lire la clé et renvoie undéfini.


De même, deux instances de la même valeur sont considérées comme deux clés dans la structure Map.


var map = new Map(); 
var k1 = ['a']; 
var k2 = ['a']; 
map 
 .set(k1, 111) 
 .set(k2, 222); 
map.get(k1) // 111 
map.get(k2) // 222
Copier après la connexion


Dans le code ci-dessus, les valeurs des variables k1 et k2 sont les mêmes, mais elles sont considérées comme dans la structure de la carte Deux clés.


Comme le montre ce qui précède, les clés de Map sont en fait liées à l'adresse mémoire. Tant que les adresses mémoire sont différentes, elles sont considérées comme deux clés. Cela résout le problème de collision de propriétés portant le même nom. Lorsque nous étendons les bibliothèques d'autres personnes, si nous utilisons des objets comme noms de clé, nous n'avons pas à nous soucier du fait que nos propres propriétés portent le même nom que celles de l'auteur original.


Si la clé de la Map est un type simple de valeur (nombre, chaîne, Booléen), alors tant que les deux valeurs​​sont strictement égales, la Map la traitera comme une clé, comprenant 0 et - 0 . De plus, bien que NaN ne soit pas strictement égal à lui-même, Map les traite comme la même clé.



let map = new Map(); 
map.set(NaN, 123); 
map.get(NaN) // 123 
map.set(-0, 123); 
map.get(+0) // 123
Copier après la connexion


Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun, et j'espère que vous en apprendrez davantage. Supportez le site Web chinois PHP.


Recommandations associées :

ie8 ne prend pas en charge la méthode de cartographie javascript

Une brève analyse du principe de fonctionnement de JavaScript mapreduce_Connaissances de base

Conversion explicite et conversion implicite basée sur javascript (explication détaillée)_compétences javascript

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Recommandé : Excellent projet de détection et de reconnaissance des visages open source JS Recommandé : Excellent projet de détection et de reconnaissance des visages open source JS Apr 03, 2024 am 11:55 AM

La technologie de détection et de reconnaissance des visages est déjà une technologie relativement mature et largement utilisée. Actuellement, le langage d'application Internet le plus utilisé est JS. La mise en œuvre de la détection et de la reconnaissance faciale sur le front-end Web présente des avantages et des inconvénients par rapport à la reconnaissance faciale back-end. Les avantages incluent la réduction de l'interaction réseau et de la reconnaissance en temps réel, ce qui réduit considérablement le temps d'attente des utilisateurs et améliore l'expérience utilisateur. Les inconvénients sont les suivants : il est limité par la taille du modèle et la précision est également limitée ; Comment utiliser js pour implémenter la détection de visage sur le web ? Afin de mettre en œuvre la reconnaissance faciale sur le Web, vous devez être familier avec les langages et technologies de programmation associés, tels que JavaScript, HTML, CSS, WebRTC, etc. Dans le même temps, vous devez également maîtriser les technologies pertinentes de vision par ordinateur et d’intelligence artificielle. Il convient de noter qu'en raison de la conception du côté Web

Comparez des structures de données complexes à l'aide de la comparaison de fonctions Java Comparez des structures de données complexes à l'aide de la comparaison de fonctions Java Apr 19, 2024 pm 10:24 PM

Lors de l'utilisation de structures de données complexes en Java, Comparator est utilisé pour fournir un mécanisme de comparaison flexible. Les étapes spécifiques comprennent : la définition d’une classe de comparaison et la réécriture de la méthode de comparaison pour définir la logique de comparaison. Créez une instance de comparaison. Utilisez la méthode Collections.sort, en transmettant les instances de collection et de comparateur.

Structures de données et algorithmes Java : explication détaillée Structures de données et algorithmes Java : explication détaillée May 08, 2024 pm 10:12 PM

Les structures de données et les algorithmes sont à la base du développement Java. Cet article explore en profondeur les structures de données clés (telles que les tableaux, les listes chaînées, les arbres, etc.) et les algorithmes (tels que le tri, la recherche, les algorithmes graphiques, etc.) en Java. Ces structures sont illustrées par des exemples pratiques, notamment l'utilisation de tableaux pour stocker les scores, de listes chaînées pour gérer les listes de courses, de piles pour implémenter la récursion, de files d'attente pour synchroniser les threads, ainsi que d'arbres et de tables de hachage pour une recherche et une authentification rapides. Comprendre ces concepts vous permet d'écrire du code Java efficace et maintenable.

La relation entre js et vue La relation entre js et vue Mar 11, 2024 pm 05:21 PM

La relation entre js et vue : 1. JS comme pierre angulaire du développement Web ; 2. L'essor de Vue.js en tant que framework front-end ; 3. La relation complémentaire entre JS et Vue ; Vue.

Compréhension approfondie des types de référence en langage Go Compréhension approfondie des types de référence en langage Go Feb 21, 2024 pm 11:36 PM

Les types de référence sont un type de données spécial dans le langage Go. Leurs valeurs ne stockent pas directement les données elles-mêmes, mais l'adresse des données stockées. Dans le langage Go, les types de référence incluent des tranches, des cartes, des canaux et des pointeurs. Une compréhension approfondie des types de référence est cruciale pour comprendre les méthodes de gestion de la mémoire et de transfert de données du langage Go. Cet article combinera des exemples de code spécifiques pour présenter les caractéristiques et l'utilisation des types de référence dans le langage Go. 1. Tranches Les tranches sont l'un des types de référence les plus couramment utilisés dans le langage Go.

Structure de données PHP : l'équilibre des arborescences AVL, maintenant une structure de données efficace et ordonnée Structure de données PHP : l'équilibre des arborescences AVL, maintenant une structure de données efficace et ordonnée Jun 03, 2024 am 09:58 AM

L'arbre AVL est un arbre de recherche binaire équilibré qui garantit des opérations de données rapides et efficaces. Pour atteindre l'équilibre, il effectue des opérations de virage à gauche et à droite, en ajustant les sous-arbres qui violent l'équilibre. Les arbres AVL utilisent l'équilibrage de hauteur pour garantir que la hauteur de l'arbre est toujours petite par rapport au nombre de nœuds, réalisant ainsi des opérations de recherche de complexité temporelle logarithmique (O (logn)) et maintenant l'efficacité de la structure de données même sur de grands ensembles de données.

Analyse complète du cadre de collecte Java : disséquer la structure des données et révéler le secret d'un stockage efficace Analyse complète du cadre de collecte Java : disséquer la structure des données et révéler le secret d'un stockage efficace Feb 23, 2024 am 10:49 AM

Présentation de Java Collection Framework L'infrastructure de collection Java est une partie importante du langage de programmation Java. Elle fournit une série de bibliothèques de classes conteneur qui peuvent stocker et gérer des données. Ces bibliothèques de classes de conteneurs ont différentes structures de données pour répondre aux besoins de stockage et de traitement des données dans différents scénarios. L'avantage du framework de collection est qu'il fournit une interface unifiée, permettant aux développeurs d'exploiter différentes bibliothèques de classes de conteneurs de la même manière, réduisant ainsi la difficulté de développement. Structures de données de l'infrastructure de collection Java L'infrastructure de collection Java contient diverses structures de données, chacune ayant ses propres caractéristiques et scénarios applicables. Voici plusieurs structures de données courantes du cadre de collection Java : 1. Liste : Liste est une collection ordonnée qui permet de répéter des éléments. Li

L'ère de l'IA de JS est arrivée ! L'ère de l'IA de JS est arrivée ! Apr 08, 2024 am 09:10 AM

Introduction à JS-Torch JS-Torch est une bibliothèque JavaScript d'apprentissage en profondeur dont la syntaxe est très similaire à celle de PyTorch. Il contient un objet tensoriel entièrement fonctionnel (peut être utilisé avec des dégradés suivis), des couches et des fonctions d'apprentissage en profondeur et un moteur de différenciation automatique. JS-Torch convient à la recherche sur l'apprentissage profond en JavaScript et fournit de nombreux outils et fonctions pratiques pour accélérer le développement de l'apprentissage profond. Image PyTorch est un framework d'apprentissage profond open source développé et maintenu par l'équipe de recherche de Meta. Il fournit un riche ensemble d'outils et de bibliothèques pour créer et former des modèles de réseaux neuronaux. PyTorch est conçu pour être simple, flexible et facile à utiliser, et ses fonctionnalités de graphique de calcul dynamique font

See all articles