Heim > Web-Frontend > js-Tutorial > Hauptteil

Was ist die Set-Datenstruktur von ES6?

一个新手
Freigeben: 2017-09-09 13:57:55
Original
1684 Leute haben es durchsucht

ES6: Set

Set verstehen

ES6 stellt das Datenstrukturset bereit. Ähnlich einem Array, jedoch ohne doppelte Werte.

  • Set selbst ist ein Konstruktor, der zum Generieren der Set-Datenstruktur verwendet wird

const s = new Set();
[2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));for(let i of s ) {    console.log(i); //2 3 4 5 }
Nach dem Login kopieren
  • Set kann a akzeptieren Ein Array (oder ein Array-ähnliches Objekt) wird als Parameter zum Initialisieren von

var set = new Set([1, 2, 3, 4, 4]);
[...set]; // [1, 2, 3, 4]
Nach dem Login kopieren

verwendet, das für die Array-Deduplizierung verwendet werden kann [...new Set(array)]

-Methode kann verwendet werden. Konvertieren Sie die Set-Struktur in ein Array

Array.from()Array.from(new Set(array))

    Beim Hinzufügen eines Werts zum Set erfolgt keine Typkonvertierung (ähnlich um Gleichheit zu erreichen ===), aber beachten Sie, dass in der Menge hier NaN gleich sich selbst ist. Die anderen beiden Objekte sind immer nicht gleich.
Attribute und Methoden der Set-Instanz
let set = new Set();let a = NaN;let b = NaN;
set.add(a);
set.add(b);
set; //{NaN} 只能加入一个,说明Set内部两个NaN是相等的
Nach dem Login kopieren

    Attribute:
    • : Konstruktor, der Standardwert ist Set-Funktion

      Set.prototype.constructor

    • : Gibt die Gesamtzahl der Mitglieder der Instanz zurück

      Set.prototype.size

    Operationsmethode (Informationen zur spezifischen Implementierung der Methode finden Sie unter: Meine einfache Untersuchung von JS-Sammlungen):
    • : Fügen Sie einen Wert hinzu und geben Sie die Set-Struktur selbst zurück

      add(value)

    • : Einen Wert löschen und einen booleschen Wert zurückgeben

      delete(value)

    • : Einen booleschen Wert zurückgeben, der angibt, ob es sich um ein Mitglied handelt

      has(value)

    • : Alle Mitglieder löschen, kein Rückgabewert

s.add(1).add(2).add(2); //链式写法s.size(); //2s.has(3); //falses.delete(2);
s.has(2); //false
Nach dem Login kopieren
  • 遍历方法

    • keys():返回键名的遍历器(什么是遍历器?Iterator)

    • values():返回键值的遍历器

    • entries():返回键值对的遍历器

    • forEach():使用回调函数遍历每个成员

这里要注意Set的键名和键值是同一个值,所以key()和values()行为是一致的。

let set = new Set(['red', 'green', 'no']);for(let item of set.keys()) {    console.log(item); //red green no}for(let item of set.values()) {    console.log(item); //red green no}for(let item of set.entries()) {    console.log(item); //['red': 'red'] ['green': 'green'] ['no': 'no']}//对每个成员执行某种操作,参数依次为键值、键名、集合本身new Set([1, 2, 3]).forEach((value, key) => console.log(value * 2)); //2 4 6
Nach dem Login kopieren

操作集合

let a = new Set([1, 2, 3]);let b = new Set([4, 3, 2]);//并集let union = new Set([...a, ...b]); //{1, 2, 3, 4}//交集let intersect = new Set([...a].filter(x => b.has(x))); //{2, 3}//差集let difference = new Set([...a].filter(x => !b.has(x))); //{1}
Nach dem Login kopieren

号外:扩展运算符(...)内部使用for...of循环,所以应该知道for of是干嘛的吧

数组的map()filter()可用于Set

let set = new Set([1, 2, 3]);set = new Set([...set].map(x => x * 2)); //set: {2, 4, 6}let set = new Set([1, 2, 3, 4, 5]);set = new Set([...set].filter(x => (x % 2) == 0)); //set {2, 4}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWas ist die Set-Datenstruktur von ES6?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!