Set

This translation is incomplete. Please help translate this article from English.

Obiectul Set permite stocare de valori unice de orice tip, fie valori primitive sau referințe de obiect.
 

Sintaxă

new Set([iterabil]);

Parametri

iterabil

Dacă un obiect iterabil este trimis ca parametru, toate elementele sale vor fi adăugate în noul Set. null este tratat ca și undefined.

Descriere

Obiectele de tip Set reprezintă colecții de valori, oferind posibilitatea de a itera peste elementele lor în ordinea inserării. O valoare din cadrului unui Set poate apărea doar o singura dată, fiind unică în colecția acestuia.

Egalitatea valorii

Deoarece fiecare valoare din Set trebuie să fie unică, egalitatea valorii va fi verificată și nu se bazează pe același algoritm ca cel folosit de operatorul ===Mai exact, pentru Seturi, +0 (care este strict egal cu -0) și -0 sunt valori diferite. Totuși, aceast aspect a fost schimbat în ultimele specificații ale ECMAScript 6. Începând cu Gecko 29.0 (Firefox 29 / Thunderbird 29 / SeaMonkey 2.26) (bug 952870) și o versiune zilnica de Chrome+0 și -0 sunt considerate ca fiind aceeași valoare în cadrul obiectelor de tip Set.  De asemenea, NaN și undefined pot fi și ele stocate într-un SetNaN este considerat ca fiind identic cu NaN (deși NaN !== NaN).

Proprietăți

Set.length
Valoare proprietății length este 0.
get Set[@@species]
Funcția constructor folosită pentru a crea obiecte derivate.
Set.prototype
Reprezintă prototipul pentru constructorul Set. Permite adăugarea de noi proprietăți tuturor obiecelor de tip Set.

Instanțe de tip Set

Toate instanțele Set moștenesc din Set.prototype.

Proprietăți

Metode

Exemple

Folosirea unui obiect Set

var mySet = new Set();

mySet.add(1);
mySet.add(5);
mySet.add("some text");
var o = {a: 1, b: 2};
mySet.add(o);

mySet.has(1); // true
mySet.has(3); // false, 3 nu a fost adăugat în set
mySet.has(5);              // true
mySet.has(Math.sqrt(25));  // true
mySet.has("Some Text".toLowerCase()); // true
mySet.has(o); // true

mySet.size; // 4

mySet.delete(5); // șterge valoarea 5 din set
mySet.has(5);    // false, valoarea 5 a fost ștearsă

mySet.size; // 3, tocmai am șters o valoare

Iterarea peste Set

// itereaza peste valorile dintr-un set
// loghează valorile în ordinea: 1, "some text"
for (let item of mySet) console.log(item);

// loghează valorile în ordinea: 1, "some text"
for (let item of mySet.keys()) console.log(item);
 
// loghează valorile în ordinea: 1, "some text" 
for (let item of mySet.values()) console.log(item);

// loghează valoarile în ordinea: 1, "some text"
// (cheia și valoare sunt identice, aici)
for (let [key, value] of mySet.entries()) console.log(key);

// schimbă un set într-un Array simplu (cu Array comprehensions) 
var myArr = [v for (v of mySet)]; // [1, "some text"]
// alternativă (cu Array.from)
var myArr = Array.from(mySet); // [1, "some text"]

// aceasta va funcționa și dacă este rulată într-un document HTML
mySet.add(document.body);
mySet.has(document.querySelector("body")); // true

// convertirea de la Set and Array
mySet2 = new Set([1,2,3,4]);
mySet2.size; // 4
[...mySet2]; // [1,2,3,4]

// intersecția poate fi simulată
var intersection = new Set([x for (x of set1) if (set2.has(x))]);

// iterarea intrărilor unui set cu forEach
mySet.forEach(function(value) {
  console.log(value);
});

// 1
// 2
// 3
// 4

Relația cu obiectele Array

var myArray = ["value1", "value2", "value3"];

// Folosiți constructorul Set pentru a transforma un Array într-un Set
var mySet = new Set(myArray);

mySet.has("value1"); // returnează true

// Folosiți operatorul de întindere pentru a transforma un 
// Set într-un Array
console.log(uneval([...mySet])); // Veți vedea exact același Array ca myArray

Specificații

Specificație Statut Commentariu
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Set' in that specification.
Standard Definiție inițială.

Compatibilitate Browser

Facilitate Chrome Firefox (Gecko) Internet Explorer Opera Safari
Suport de bază

38 [1]

13 (13) 11 25 7.1
Argument Constructor: new Set(iterable) 38 13 (13) Not supported 25 Not supported
iterabil 38 17 (17) Not supported 25 7.1
Set.clear() 38 19 (19) 11 25 7.1
Set.keys(), Set.values(), Set.entries() 38 24 (24) Not supported 25 7.1
Set.forEach() 38 25 (25) 11 25 7.1
Egalitatea valorii între -0 și 0 38 29 (29) Not supported 25 Not supported
Argument Constructor: new Set(null) (Yes) 37 (37) ? ? ?
Monkey-patched add() in Constructor (Yes) 37 (37) ? ? ?
Set[@@species] ? 41 (41) ? ? ?
Set() fără throw-uri noi ? 42 (42) ? ? ?
             
        ? ? ?
Monkey-patched add() in Constructor ? (Yes) 37.0 (37) ? ? ?
Set[@@species] ? ? 41.0 (41) ? ? ?
Set() without new throws ? ? 42.0 (42) ? ? ?

[1] Funcționalitatea era disponibilă sub forma unei preferințe în Chrome 31. În chrome://flags, pentru a permite folosirea acesteia, activează intrarea "Enable Experimental JavaScript".

Vezi, de asemenea:

Document Tags and Contributors

 Contributors to this page: DSBalaban
 Last updated by: DSBalaban,