aboutsummaryrefslogtreecommitdiff
path: root/files/ca/web/javascript/referencia/objectes_globals/set/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/ca/web/javascript/referencia/objectes_globals/set/index.html')
-rw-r--r--files/ca/web/javascript/referencia/objectes_globals/set/index.html380
1 files changed, 380 insertions, 0 deletions
diff --git a/files/ca/web/javascript/referencia/objectes_globals/set/index.html b/files/ca/web/javascript/referencia/objectes_globals/set/index.html
new file mode 100644
index 0000000000..993d296324
--- /dev/null
+++ b/files/ca/web/javascript/referencia/objectes_globals/set/index.html
@@ -0,0 +1,380 @@
+---
+title: Set
+slug: Web/JavaScript/Referencia/Objectes_globals/Set
+translation_of: Web/JavaScript/Reference/Global_Objects/Set
+---
+<div>{{JSRef}}</div>
+
+<p>L'objecte <strong><code>Set</code></strong> permet emmagatzemar valors <em>únics </em>de qualsevol tipus, ja siguin {{Glossary("Primitive", "valors primitius")}} o bé referències a objectes.</p>
+
+<h2 id="Sintaxi">Sintaxi</h2>
+
+<pre class="syntaxbox">new Set([iterable]);</pre>
+
+<h3 id="Paràmetres">Paràmetres</h3>
+
+<dl>
+ <dt>iterable</dt>
+ <dd>Si rep un <a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...of">objecte iterable</a>, tots els seus elements seran afegits al nou Set. null serà tractat com a undefined.</dd>
+</dl>
+
+<h2 id="Descripció">Descripció</h2>
+
+<p>Els objectes <code>Set</code> són coleccions de valors, els seus elements poden ser iterats en ordre d'inserció. Un valor només pot aparèixer un cop dins el <code>Set</code>; és únic dins la col·lecció del <code>Set</code>.</p>
+
+<h3 id="Igualtat_de_valors">Igualtat de valors</h3>
+
+<p>Degut a que cada valor dins el <code>Set</code> ha de ser únic, la igualtat dels valors serà comprovada i aquesta no es basa en el mateix algoritme que l'emprat per l'operador<code> ===</code>. Concreatement, per a <code>Set</code>s, <code>+0</code> (que és estrictament igual a <code>-0</code>) i <code>-0</code> són valors diferents. Tot i així, aquest comportament s'ha canviat a la última especificació de l'ECMAScript 6. A partir de Gecko 29.0 {{geckoRelease("29")}} ({{bug("952870")}}) i una recent <a href="https://code.google.com/p/v8/issues/detail?id=3069">versió nightly del Chrome</a>, <code>+0</code> i <code>-0</code> són tractats com al mateix valor en objectes <code>Set</code>. Així mateix, <code>NaN</code> i <code>undefined</code> també poden ser emmagatzemats dins un Set. <code>NaN</code> és considerat igual a <code>NaN</code> (tot i que <code>NaN !== NaN</code>).</p>
+
+<h2 id="Propietats">Propietats</h2>
+
+<dl>
+ <dt><code>Set.length</code></dt>
+ <dd>El valor de la propietat <code>length</code> és 0.</dd>
+ <dt>{{jsxref("Set.@@species", "get Set[@@species]")}}</dt>
+ <dd>La funció constructora que s'ha utilitzat per a crear objectes derivats.</dd>
+ <dt>{{jsxref("Set.prototype")}}</dt>
+ <dd>Representa el prototipus per al constructor <code>Set</code>. Permet afegir propietats a tots els objectes <code>Set</code>.</dd>
+</dl>
+
+<h2 id="Instàncies_de_Set">Instàncies de <code>Set</code></h2>
+
+<p>Totes les instàncies de <code>Set</code> hereten de {{jsxref("Set.prototype")}}.</p>
+
+<h3 id="Propietats_2">Propietats</h3>
+
+<p>{{page('ca/Web/JavaScript/Reference/Global_Objects/Set/prototype','Propietats')}}</p>
+
+<h3 id="Mètodes">Mètodes</h3>
+
+<p>{{page('ca/Web/JavaScript/Reference/Global_Objects/Set/prototype','Mètodes')}}</p>
+
+<h2 id="Exemples">Exemples</h2>
+
+<h3 id="Utilitzar_l'objecte_Set">Utilitzar l'objecte <code>Set</code></h3>
+
+<pre class="brush: js">var mySet = new Set();
+
+mySet.add(1);
+mySet.add(5);
+mySet.add("algun text");
+
+mySet.has(1); // true
+mySet.has(3); // false, 3 no ha estat afegit al set
+mySet.has(5); // true
+mySet.has(Math.sqrt(25)); // true
+mySet.has("Some Text".toLowerCase()); // true
+
+mySet.size; // 3
+
+mySet.delete(5); // esborra 5 del set
+mySet.has(5); // false, 5 ha sigut esborrat
+
+mySet.size; // 2, acabem d'esborrar un valor
+</pre>
+
+<h3 id="Iterarar_Sets">Iterarar Sets</h3>
+
+<pre class="brush: js">// iterar els elements d'un set
+// imprimeix els elements en l'ordre: 1, "algun text"
+for (let item of mySet) console.log(item);
+
+// imprimeix els elements en l'ordre: 1, "algun text"
+for (let item of mySet.keys()) console.log(item);
+
+// imprimeix els elements en l'ordre: 1, "algun text"
+for (let item of mySet.values()) console.log(item);
+
+// imprimeix els elements en l'ordre: 1, "algun text"
+//(key i value són iguals en aquest exemple)
+for (let [key, value] of mySet.entries()) console.log(key);
+
+// converteix el set en un Array (mitjançant <a href="/en-US/docs/Web/JavaScript/Reference/Operators/Array_comprehensions">Array comprehensions</a>)
+var myArr = [v for (v of mySet)]; // [1, "algun text"]
+// Alternativa (mitjançant <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from">Array.from</a>)
+var myArr = Array.from(mySet); // [1, "algun text"]
+
+// el codi següent també funcionarà si s'executa dins un document HTML
+mySet.add(document.body);
+mySet.has(document.querySelector("body")); // true
+
+// conversió entre Set i Array
+mySet2 = new Set([1,2,3,4]);
+mySet2.size; // 4
+[...mySet2]; // [1,2,3,4]
+
+// la intersecció es pot simular via
+var intersection = new Set([x for (x of set1) if (set2.has(x))]);
+
+// Iteració de les entrades del set mitjançant un forEach
+mySet.forEach(function(value) {
+ console.log(value);
+});
+
+// 1
+// 2
+// 3
+// 4</pre>
+
+<h3 id="Relació_amb_objectes_Array">Relació amb objectes <code>Array</code></h3>
+
+<pre class="brush: js">var myArray = ["valor1", "valor2", "valor3"];
+
+// Utilitzem el constructor normal del Set per a transformar un Array en un Set
+var mySet = new Set(myArray);
+
+mySet.has("valor1"); // retorna true
+
+// Utilitzem l'operador spread per a transformar un Set en un Array.
+console.log(uneval([...mySet])); // Mostrarà exactament el mateix Array que myArray</pre>
+
+<h2 id="Especificacions">Especificacions</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Especificació</th>
+ <th scope="col">Estat</th>
+ <th scope="col">Comentaris</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES6', '#sec-set-objects', 'Set')}}</td>
+ <td>{{Spec2('ES6')}}</td>
+ <td>Definició inicial.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Compatibilitat_amb_navegadors">Compatibilitat amb navegadors</h2>
+
+<p>{{CompatibilityTable}}</p>
+
+<div id="compat-desktop">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>Característica</th>
+ <th>Chrome</th>
+ <th>Firefox (Gecko)</th>
+ <th>Internet Explorer</th>
+ <th>Opera</th>
+ <th>Safari</th>
+ </tr>
+ <tr>
+ <td>Suport bàsic</td>
+ <td>
+ <p>{{ CompatChrome(38) }} [1]</p>
+ </td>
+ <td>{{ CompatGeckoDesktop("13") }}</td>
+ <td>{{ CompatIE("11") }}</td>
+ <td>25</td>
+ <td>7.1</td>
+ </tr>
+ <tr>
+ <td>Argument al constructor: <code>new Set(iterable)</code></td>
+ <td>{{ CompatChrome(38) }}</td>
+ <td>{{ CompatGeckoDesktop("13") }}</td>
+ <td>{{CompatNo}}</td>
+ <td>25</td>
+ <td>{{CompatNo}}</td>
+ </tr>
+ <tr>
+ <td>iterable</td>
+ <td>{{ CompatChrome(38) }}</td>
+ <td>{{ CompatGeckoDesktop("17") }}</td>
+ <td>{{CompatNo}}</td>
+ <td>25</td>
+ <td>7.1</td>
+ </tr>
+ <tr>
+ <td><code>Set.clear()</code></td>
+ <td>{{ CompatChrome(38) }}</td>
+ <td>{{CompatGeckoDesktop("19")}}</td>
+ <td>{{ CompatIE("11") }}</td>
+ <td>25</td>
+ <td>7.1</td>
+ </tr>
+ <tr>
+ <td><code>Set.keys(), Set.values(), Set.entries()</code></td>
+ <td>{{ CompatChrome(38) }}</td>
+ <td>{{CompatGeckoDesktop("24")}}</td>
+ <td>{{CompatNo}}</td>
+ <td>25</td>
+ <td>7.1</td>
+ </tr>
+ <tr>
+ <td><code>Set.forEach()</code></td>
+ <td>{{ CompatChrome(38) }}</td>
+ <td>{{CompatGeckoDesktop("25")}}</td>
+ <td>{{ CompatIE("11") }}</td>
+ <td>25</td>
+ <td>7.1</td>
+ </tr>
+ <tr>
+ <td>Igualtat de valors per a -0 i 0</td>
+ <td>{{ CompatChrome(38) }}</td>
+ <td>{{CompatGeckoDesktop("29")}}</td>
+ <td>{{CompatNo}}</td>
+ <td>25</td>
+ <td>{{CompatNo}}</td>
+ </tr>
+ <tr>
+ <td>Argument del constructor: <code>new Set(null)</code></td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatGeckoDesktop("37")}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ </tr>
+ <tr>
+ <td>Monkey-patched <code>add()</code> al Constructor</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatGeckoDesktop("37")}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ </tr>
+ <tr>
+ <td><code>Set[@@species]</code></td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatGeckoDesktop("41")}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ </tr>
+ <tr>
+ <td><code>Set()</code> sense <code>new</code> llença excepció</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatGeckoDesktop("42")}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<div id="compat-mobile">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>Característica</th>
+ <th>Android</th>
+ <th>Chrome for Android</th>
+ <th>Firefox Mobile (Gecko)</th>
+ <th>IE Mobile</th>
+ <th>Opera Mobile</th>
+ <th>Safari Mobile</th>
+ </tr>
+ <tr>
+ <td>Suport bàsic</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatChrome(38)}} [1]</td>
+ <td>{{ CompatGeckoMobile("13") }}</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatNo}}</td>
+ <td>8</td>
+ </tr>
+ <tr>
+ <td>Argument al constructor: <code>new Set(iterable)</code></td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatChrome(38)}}</td>
+ <td>{{ CompatGeckoMobile("13") }}</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatNo}}</td>
+ </tr>
+ <tr>
+ <td>iterable</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatNo}}</td>
+ <td>{{ CompatGeckoMobile("17") }}</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatNo}}</td>
+ <td>8</td>
+ </tr>
+ <tr>
+ <td><code>Set.clear()</code></td>
+ <td>{{CompatNo}}</td>
+ <td>{{ CompatChrome(38) }}</td>
+ <td>{{CompatGeckoMobile("19")}}</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatNo}}</td>
+ <td>8</td>
+ </tr>
+ <tr>
+ <td><code>Set.keys(), Set.values(), Set.entries()</code></td>
+ <td>{{CompatNo}}</td>
+ <td>{{ CompatChrome(38) }}</td>
+ <td>{{CompatGeckoMobile("24")}}</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatNo}}</td>
+ <td>8</td>
+ </tr>
+ <tr>
+ <td><code>Set.forEach()</code></td>
+ <td>{{CompatNo}}</td>
+ <td>{{ CompatChrome(38) }}</td>
+ <td>{{CompatGeckoMobile("25")}}</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatNo}}</td>
+ <td>8</td>
+ </tr>
+ <tr>
+ <td>Igualtat de valors per a -0 i 0</td>
+ <td>{{CompatNo}}</td>
+ <td>{{ CompatChrome(38) }}</td>
+ <td>{{CompatGeckoMobile("29")}}</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatNo}}</td>
+ </tr>
+ <tr>
+ <td>Argument del constructor: <code>new Set(null)</code></td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatGeckoMobile("37")}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ </tr>
+ <tr>
+ <td>Monkey-patched <code>add()</code> al Constructor</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatGeckoMobile("37")}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ </tr>
+ <tr>
+ <td><code>Set[@@species]</code></td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatGeckoMobile("41")}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ </tr>
+ <tr>
+ <td><code>Set()</code> sense <code>new</code> llença excepció</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatGeckoMobile("42")}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<p>[1] La característica estava disponible sota una preferència a partir de Chorem 31. Al <code>chrome://flags</code>, activeu l'entrada “Activa JavaScript Experimental”.</p>
+
+<h2 id="Vegeu_també">Vegeu també</h2>
+
+<ul>
+ <li>{{jsxref("Map")}}</li>
+ <li>{{jsxref("WeakMap")}}</li>
+ <li>{{jsxref("WeakSet")}}</li>
+</ul>