Maison  >  Article  >  interface Web  >  Quelle est la différence entre l'ensemble es6 et la carte

Quelle est la différence entre l'ensemble es6 et la carte

青灯夜游
青灯夜游original
2022-04-15 18:37:417866parcourir

Différence : 1. Set fait référence à la structure "set", tandis que Map fait référence à la structure "dictionnaire" ; 2. Set stocke les éléments sous la forme de "[valeur, valeur]", tandis que Map stocke les éléments sous la forme de "[key, value]"; 3. Map peut utiliser get() pour trouver une valeur spécifique par clé et la renvoyer, mais set ne le peut pas.

Quelle est la différence entre l'ensemble es6 et la carte

L'environnement d'exploitation de ce tutoriel : système Windows 7, ECMAScript version 6, ordinateur Dell G3.

Brève description :

  • Les principaux scénarios d'application de Set et Map sont la réorganisation et le stockage des données.
  • Set est une structure de données appelée ensemble, et Map est une structure de données appelée dictionnaire.

La différence entre les ensembles et les dictionnaires :

  • Points communs : Les ensembles et les dictionnaires peuvent stocker des valeurs uniques
  • Différences : Les ensembles stockent des éléments sous la forme de [valeur, valeur] et les dictionnaires stockent des éléments sous la forme de [clé, valeur] Stockage sous la forme de

Set :

ES6 ajoute une nouvelle structure de données, similaire à un tableau, mais les membres sont uniques et non ordonnés, et il n'y a pas de valeurs en double.

Set lui-même est un constructeur utilisé pour générer la structure de données Set.

Les objets Set vous permettent de stocker des valeurs uniques de tout type, qu'il s'agisse de valeurs primitives ou de références d'objets.

const s = new Set()
[1, 2, 3, 4, 3, 2, 1].forEach(x => s.add(x))
for (let i of s) {
    console.log(i)	// 1 2 3 4
}
// 去重数组的重复对象
let arr = [1, 2, 3, 2, 1, 1]
[... new Set(arr)]	// [1, 2, 3]

Remarque : lors de l'ajout de valeurs à Set, aucune conversion de type ne se produit, donc `5` et `"5"` sont deux valeurs différentes. Set détermine en interne si deux valeurs sont différentes. L'algorithme utilisé est appelé "Égalité de même valeur-zéro", qui est similaire à l'opérateur **égalité exacte** (`===` La principale différence est *). *`NaN` est égal à lui-même, tandis que l'opérateur d'égalité exacte considère que `NaN` n'est pas égal à lui-même. **

let set = new Set();
let a = NaN;
let b = NaN;
set.add(a);
set.add(b);
set // Set {NaN}

let set1 = new Set()
set1.add(5)
set1.add('5')
console.log([...set1])	// [5, "5"]

Méthode de fonctionnement :

  • add(value) : Nouveau, équivalent à push in array.

  • delete(value) : Supprimez la valeur dans la collection si elle existe.

  • has(value) : Déterminez si la valeur existe dans l'ensemble.

  • clear() : Effacez la collection.

Méthode Traversal : méthode Traversal (l'ordre de parcours est l'ordre d'insertion)

  • keys() : renvoie un itérateur contenant toutes les clés de la collection.

  • values() : renvoie un itérateur contenant toutes les valeurs de la collection.

  • entries() : renvoie un itérateur clé-valeur contenant tous les éléments de l'objet Set.

  • forEach(callbackFn, thisArg) : Utilisé pour effectuer des opérations de rappelFn sur les membres de la collection. Si le paramètre thisArg est fourni, ceci dans le rappel sera ce paramètre Il n'y a pas de valeur de retour.

Dictionnaire (Carte) :

est une structure de paires clé-valeur avec une vitesse de recherche extrêmement rapide.

const m = new Map()
const o = {p: 'haha'}
m.set(o, 'content')
m.get(o)	// content

m.has(o)	// true
m.delete(o)	// true
m.has(o)	// false

Comment fonctionner :

  • set(key, value) : Ajoutez de nouveaux éléments au dictionnaire.
  • get(key) : recherchez une valeur spécifique par clé et renvoyez-la.
  • has(key) : Déterminez si la clé clé existe dans le dictionnaire.
  • delete(key) : supprimez les données correspondantes du dictionnaire via la clé key.
  • clear() : Supprime tous les éléments de ce dictionnaire.

Méthode Traversal :

  • Keys() : Renvoie tous les noms de clés contenus dans le dictionnaire sous la forme d'un itérateur.
  • values() : Renvoie toutes les valeurs contenues dans le dictionnaire sous la forme d'un itérateur.
  • entries() : renvoie un itérateur de tous les membres.
  • forEach() : Parcourez tous les membres du dictionnaire.

Résumé** : **

Set :

  • fait référence à la structure "set"

  • [valeur, valeur], la valeur clé et le nom de la clé sont cohérents (ou seulement la valeur clé, pas de nom de clé).

  • Impossible de trouver une valeur spécifique par clé

Carte :

  • fait référence à la structure "dictionnaire"

  • [clé, valeur], la valeur de la clé et le nom de la clé sont incohérents

  • Carte peut être utilisé pour obtenir () Rechercher une valeur spécifique par clé et retourner

【Recommandations associées : tutoriel vidéo javascript, front-end web

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:
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