From 4b1a9203c547c019fc5398082ae19a3f3d4c3efe Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:41:15 -0500 Subject: initial commit --- .../referencia/objectes_globals/map/index.html | 385 +++++++++++++++++++++ 1 file changed, 385 insertions(+) create mode 100644 files/ca/web/javascript/referencia/objectes_globals/map/index.html (limited to 'files/ca/web/javascript/referencia/objectes_globals/map/index.html') diff --git a/files/ca/web/javascript/referencia/objectes_globals/map/index.html b/files/ca/web/javascript/referencia/objectes_globals/map/index.html new file mode 100644 index 0000000000..8e2bb647bd --- /dev/null +++ b/files/ca/web/javascript/referencia/objectes_globals/map/index.html @@ -0,0 +1,385 @@ +--- +title: Map +slug: Web/JavaScript/Referencia/Objectes_globals/Map +translation_of: Web/JavaScript/Reference/Global_Objects/Map +--- +
{{JSRef("Global_Objects", "Map")}}
+ +

Resum

+ +

L'objecte Map és un simple mapa de parelles clau/valor. Qualsevol valor (tant objectes com {{Glossary("Primitive", "primitive values")}}) poden fer-se servir tant com a clau com a valor.

+ +

Sintaxi

+ +
new Map([iterable])
+
+ +

Paràmetres

+ +
+
iterable
+
Iterable és un Array o un altre objecte iterable els quals els seus elements són parelles clau/valor (Arrays de 2 elements). Cada parella clau/valor serà afegida al nou mapa. nul és tracta com a indefinit.
+
+ +

Descripció

+ +

Un objecte Map pot iterar els seus elements en ordre d'inserció - un bucle for..of retornarà un array de [key, value] per cada iteració.

+ +

Igualtat de claus

+ +

La igualtat de claus es basa en l'algorisme "mateix valor": NaN es considera igual a NaN (tot i que NaN !== NaN) i tots els altres valors es consideren iguals d'acord amb la semàntica de l'operador ===. En versions anteriors a l'esborrany de l'ECMAScript 6 -0 i +0 es consideraven diferents (tot i que -0 === +0), aquest comportament s'ha canviat en versions posteriors i ha sigut adaptat al {{geckoRelease("29")}} ({{bug("952870")}}) i una versió diària de Chrome.

+ +

Comparació d'objectes amb mapes

+ +

Els {{jsxref("Object", "Objects")}} son similars als Maps en el sentit que tots dos permeten assignar valors a claus, obtenir aquests valors, esborrar claus i detectar si una clau té un valor assignat o no. Degut a això, històricament s'han fet anar Objects com a Maps; tot i això existeixen diferències importants entre Objects i Maps que fan que l'ús de Map sigui millor.

+ + + +

Utilitzeu mapes en comptes d'objejctes quan les claus no se sàpiguin en temps d'execució, o bé quan totes les claus o els valors siguin del mateix tipus.

+ +

Utilitzeu objectes quan hi hagi una lògica que operi els elements individualment.

+ +

Propietats

+ +
+
Map.length
+
El valor de la propietat length és 1.
+
{{jsxref("Map.prototype")}}
+
Representa el prototipus pel constructor Map. Permet afegir propietats a tots els objectes de tipus Map.
+
+ +

Instàncies de Map

+ +

Totes les instàncies de Map hereten de {{jsxref("Map.prototype")}}.

+ +

Propietats

+ +

{{page('ca/Web/JavaScript/Reference/Global_Objects/Map/prototype','Propietats')}}

+ +

Mètodes

+ +

{{page('ca/Web/JavaScript/Reference/Global_Objects/Map/prototype','Mètodes')}}

+ +

Exemples

+ +

Exemple: Utilitzar l'objecte Map

+ +
var myMap = new Map();
+
+var keyObj = {},
+    keyFunc = function () {},
+    keyString = "a string";
+
+// preparar els valors
+myMap.set(keyString, "valor associat a amb 'un string'");
+myMap.set(keyObj, "valor associat amb keyObj");
+myMap.set(keyFunc, "valor associat amb with keyFunc");
+
+myMap.size; // 3
+
+// obtenir els valors
+myMap.get(keyString);    // "valor associat amb 'un string'"
+myMap.get(keyObj);       // "valor associat amb keyObj"
+myMap.get(keyFunc);      // "valor associat amb keyFunc"
+
+myMap.get("a string");   // "valor associat amb 'un string'"
+                         // com que keyString === 'un string'
+myMap.get({});           // undefined, perquè keyObj !== {}
+myMap.get(function() {}) // undefined, perquè keyFunc !== function () {}
+
+ +

Exemple: Utilitzar NaN com a claus en un Map

+ +

NaN també pot emprar-se com a clau. Tot i que NaN no és igual a si mateix (NaN !== NaN és cert), l'exemple següent funciona perquè els NaNs són indistinguibles entre ells:

+ +
var myMap = new Map();
+myMap.set(NaN, "no un nombre");
+
+myMap.get(NaN); // "no un nombre"
+
+var altreNaN = Number("foo");
+myMap.get(altreNaN); // "no un nombre"
+
+ +

Exemple: Iterar Maps amb for..of

+ +

Els mapes es poden iterar fent servir un bucle for..of :

+ +
var myMap = new Map();
+myMap.set(0, "zero");
+myMap.set(1, "un");
+for (var [key, value] of myMap) {
+  alert(key + " = " + value);
+}
+// Mostrarà 2 alertes; el primer amb "0 = zero" i el segon amb "1 = one"
+
+for (var key of myMap.keys()) {
+  alert(key);
+}
+// Mostrarà 2 alertes; el primer amb "0" i el segon amb "1"
+
+for (var value of myMap.values()) {
+  alert(value);
+}
+// Mostrarà 2 alertes; el primer amb "zero" i el segon amb "un"
+
+for (var [key, value] of myMap.entries()) {
+  alert(key + " = " + value);
+}
+// Mostrarà 2 alertes; el primer amb "0 = zero" i el segon amb "1 = un"
+
+myMap.forEach(function(value, key) {
+  alert(key + " = " + value);
+}, myMap)
+// Mostrarà 2 alertes; el primer amb "0 = zero" i el segon amb "1 = un"
+
+ +

Exemple: Relació amb els objectes Array

+ +
var kvArray = [["clau1", "valor1"], ["clau2", "valor2"]];
+
+// Utilitzeu el constructor de Map normal per a transformar un Array 2D clau-valor en un mapa
+var myMap = new Map(kvArray);
+
+myMap.get("valor1"); // retorna "valor1"
+
+// Utilitzeu l'operador spread per a transformar un mapa en un Array 2D clau-valor.
+alert(uneval([...myMap])); // Mostrarà exactament el mateix Array que kvArray
+
+// O bé utilitzeu l'operador spread a l'iterador de les claus o els valor per a obtenir
+// un array de només les claus o els valors
+alert(uneval([...myMap.keys()])); // Mostrarà ["clau1", "clau2"]
+
+ +

Especificacions

+ + + + + + + + + + + + + + +
EspecificacióEstatComentaris
{{SpecName('ES6', '#sec-map-objects', 'Map')}}{{Spec2('ES6')}}Definició inicial.
+ +

Compatibilitat amb navegadors

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suport bàsic +

{{ CompatChrome(31) }} [1]
+ {{ CompatChrome(38) }}

+
{{ CompatGeckoDesktop("13") }}11257.1
Argument del constructor: new Map(iterable){{ CompatChrome(38) }}{{ CompatGeckoDesktop("13") }}{{ CompatNo() }}25{{ CompatNo() }}
iterable{{ CompatChrome(38) }}{{ CompatGeckoDesktop("17") }}{{ CompatNo() }}257.1
Map.clear(){{ CompatChrome(31) }} [1]
+ {{ CompatChrome(38) }}
{{CompatGeckoDesktop("19")}}11257.1
Map.keys(), Map.values(), Map.entries(){{ CompatChrome(37) }} [1]
+ {{ CompatChrome(38) }}
{{CompatGeckoDesktop("20")}}{{ CompatNo() }}257.1
Map.forEach(){{ CompatChrome(36) }} [1]
+ {{ CompatChrome(38) }}
{{CompatGeckoDesktop("25")}}11257.1
Igualtat de claus per a -0 i 0{{ CompatChrome(34) }} [1]
+ {{ CompatChrome(38) }}
{{CompatGeckoDesktop("29")}}{{ CompatNo() }}25{{ CompatNo() }}
Argument del constructor: new Map(null){{ CompatVersionUnknown() }}{{CompatGeckoDesktop("37")}}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
Monkey-patched set() al Constructor{{ CompatVersionUnknown() }}{{CompatGeckoDesktop("37")}}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome per AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{ CompatNo() }}{{ CompatChrome(31) }} [1]
+ {{ CompatChrome(38) }}
{{ CompatGeckoMobile("13") }}{{ CompatNo() }}{{ CompatNo() }}iOS 8
Argument del constructor: new Map(iterable){{ CompatNo() }}{{ CompatChrome(38) }}{{ CompatGeckoMobile("13") }}{{ CompatNo() }}{{ CompatNo() }}{{ CompatNo }}
iterable{{ CompatNo() }}{{ CompatNo() }}{{ CompatGeckoMobile("17") }}{{ CompatNo() }}{{ CompatNo() }}iOS 8
Map.clear(){{ CompatNo() }}{{ CompatChrome(31) }} [1]
+ {{ CompatChrome(38) }}
{{CompatGeckoMobile("19")}}{{ CompatNo() }}{{ CompatNo() }}iOS 8
Map.keys(), Map.values(), Map.entries(){{ CompatNo() }}{{ CompatChrome(37) }} [1]
+ {{ CompatChrome(38) }}
{{CompatGeckoMobile("20")}}{{ CompatNo() }}{{ CompatNo() }}iOS 8
Map.forEach(){{ CompatNo() }}{{ CompatChrome(36) }} [1]
+ {{ CompatChrome(38) }}
{{CompatGeckoMobile("25")}}{{ CompatNo() }}{{ CompatNo() }}iOS 8
Igualtat per a -0 i 0{{ CompatNo() }}{{ CompatChrome(34) }} [1]
+ {{ CompatChrome(38) }}
{{CompatGeckoMobile("29")}}{{ CompatNo() }}{{ CompatNo() }}{{ CompatNo() }}
Argument del constructor: new Map(null){{ CompatUnknown() }}{{ CompatVersionUnknown() }}{{CompatGeckoMobile("37")}}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
Monkey-patched set() al Constructor{{ CompatUnknown() }}{{ CompatVersionUnknown() }}{{CompatGeckoMobile("37")}}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
+
+ +

[1] The feature is available behind a preference. In chrome://flags, activate the entry “Enable Experimental JavaScript”.

+ +

Vegeu també

+ + -- cgit v1.2.3-54-g00ecf