JavaScript-sarja ja WeakSet

Tässä opetusohjelmassa opit JavaScript-sarjoista ja WeakSeteistä esimerkkien avulla.

JavaScript ES6 on ottanut käyttöön kaksi uutta tietorakennetta, eli Setja WeakSet.

Joukko on samanlainen kuin taulukko, jonka avulla voimme tallentaa useita kohteita, kuten numeroita, merkkijonoja, esineitä jne. Joukko, toisin kuin taulukko, ei kuitenkaan voi sisältää päällekkäisiä arvoja.

Luo JavaScript-sarja

Luo a Set, sinun on käytettävä new Set()konstruktoria. Esimerkiksi,

 // create Set const set1 = new Set(); // an empty set console.log(set1); // Set () // Set with multiple types of value const set2 = new Set((1, 'hello', (count : true))); console.log(set2); // Set (1, "hello", (count: true))

Kun päällekkäiset arvot välitetään Setobjektille, päällekkäiset arvot suljetaan pois.

 // Set with duplicate values const set3 = new Set((1, 1, 2, 2)); console.log(set3); // Set (1, 2)

Käytä asetettuja elementtejä

Voit käyttää Setelementtejä käyttämällä values()menetelmää ja tarkista, onko elementti sisällä Setkäyttäen has()menetelmää. Esimerkiksi,

 const set1 = new Set((1, 2, 3)); // access the elements of a Set console.log(set1.values()); // Set Iterator (1, 2, 3)

Voit käyttää has()menetelmää tarkistaa, jos elementti on asetettu. Esimerkiksi,

 const set1 = new Set((1, 2, 3)); // check if an element is in Set console.log(set1.has(1));

Uusien elementtien lisääminen

Voit lisätä elementtejä sarjaan add()menetelmällä. Esimerkiksi,

 const set = new Set((1, 2)); console.log(set.values()); // adding new elements set.add(3); console.log(set.values()); // adding duplicate elements // does not add to Set set.add(1); console.log(set.values());

Tuotos

 Aseta Iterator (1, 2) Aseta Iterator (1, 2, 3) Aseta Iterator (1, 2, 3)

Elementtien poistaminen

Voit käyttää clear()ja delete()-menetelmää elementtien poistamiseksi joukosta.

delete()Menetelmä poistaa tiettyyn osaan siitä Set. Esimerkiksi,

 const set = new Set((1, 2, 3)); console.log(set.values()); // Set Iterator (1, 2, 3) // removing a particular element set.delete(2); console.log(set.values()); // Set Iterator (1, 3)

clear()Menetelmä poistaa kaikki alkiot Set. Esimerkiksi,

 const set = new Set((1, 2, 3)); console.log(set.values()); // Set Iterator (1, 2, 3) // remove all elements of Set set.clear(); console.log(set.values()); // Set Iterator ()

Toista setit

Voit toistaa Set-elementit läpi for… of -silmukan tai forEach () -menetelmällä. Elementteihin pääsee lisäysjärjestyksessä. Esimerkiksi,

 const set = new Set((1, 2, 3)); // looping through Set for (let i of set) ( console.log(i); )

Tuotos

 1 2 3

JavaScriptin heikko joukko

WeakSet on samanlainen kuin sarja. WeakSet voi kuitenkin sisältää vain objekteja, kun taas joukko voi sisältää mitä tahansa tietotyyppejä, kuten merkkijonoja, numeroita, objekteja jne.

 const weakSet = new WeakSet(); console.log(weakSet); // WeakSet () let obj = ( message: 'Hi', sendMessage: true ) // adding object (element) to WeakSet weakSet.add(obj); console.log(weakSet); // WeakSet ((message: "Hi", sendMessage: true))

Kun yrität lisätä muita tietotyyppejä objektien lisäksi, WeakSet heittää virheen. Esimerkiksi,

 // trying to add string to WeakSet weakSet.add('hello'); // throws error // TypeError: Attempted to add a non-object key to a WeakSet console.log(weakSet);

WeakSet-menetelmät

WeakSets ovat menetelmiä add(), delete()ja has(). Esimerkiksi,

 const weakSet = new WeakSet(); console.log(weakSet); // WeakSet () const obj = (a:1); // add to a weakSet weakSet.add(obj); console.log(weakSet); // WeakSet ((a: 1)) // check if an element is in Set console.log(weakSet.has(obj)); // true // delete elements weakSet.delete(obj); console.log(weakSet); // WeakSet ()

Heikot joukot eivät ole toistettavissa

Toisin kuin setit, WeakSets ei ole toistettavissa. Esimerkiksi,

 const weakSet = new WeakSet((a:1)); // looping through WeakSet for (let i of weakSet) ( // TypeError console.log(i); )

Matemaattiset joukkooperaatiot

JavaScript ei tarjoa sisäänrakennettuja menetelmiä matemaattisten toimintojen, kuten liiton, leikkauspisteen, eron, jne. Suorittamiseksi. Voimme kuitenkin luoda ohjelmia näiden toimintojen suorittamiseksi.

Esimerkki: Aseta unionin toiminta

 // perform union operation // contain elements of both sets function union(a, b) ( let unionSet = new Set(a); for (let i of b) ( unionSet.add(i); ) return unionSet ) // two sets of fruits let setA = new Set(('apple', 'mango', 'orange')); let setB = new Set(('grapes', 'apple', 'banana')); let result = union(setA, setB); console.log(result);

Tuotos

 Set ("omena", "mango", "oranssi", "viinirypäleet", "banaani")

Esimerkki: Aseta leikkauskäyttö

 // perform intersection operation // elements of set a that are also in set b function intersection(setA, setB) ( let intersectionSet = new Set(); for (let i of setB) ( if (setA.has(i)) ( intersectionSet.add(i); ) ) return intersectionSet; ) // two sets of fruits let setA = new Set(('apple', 'mango', 'orange')); let setB = new Set(('grapes', 'apple', 'banana')); let result = intersection(setA, setB); console.log(result);

Tuotos

 Set ("omena")

Esimerkki: Aseta ero -toiminto

 // perform difference operation // elements of set a that are not in set b function difference(setA, setB) ( let differenceSet = new Set(setA) for (let i of setB) ( differenceSet.delete(i) ) return differenceSet ) // two sets of fruits let setA = new Set(('apple', 'mango', 'orange')); let setB = new Set(('grapes', 'apple', 'banana')); let result = difference(setA, setB); console.log(result);

Tuotos

 Set ("mango", "oranssi")

Esimerkki: Aseta osajoukon toiminta

 // perform subset operation // true if all elements of set b is in set a function subset(setA, setB) ( for (let i of setB) ( if (!setA.has(i)) ( return false ) ) return true ) // two sets of fruits let setA = new Set(('apple', 'mango', 'orange')); let setB = new Set(('apple', 'orange')); let result = subset(setA, setB); console.log(result);

Tuotos

 totta

JavaScript Setsja WeakSetsesiteltiin ES6: ssa . Jotkin selaimet eivät ehkä tue niiden käyttöä. Jos haluat lisätietoja, käy JavaScript-asetusten tuessa ja JavaScript-heikkojen asetusten tuessa.

Mielenkiintoisia artikkeleita...