Tässä opetusohjelmassa opit JavaScript-sarjoista ja WeakSeteistä esimerkkien avulla.
JavaScript ES6 on ottanut käyttöön kaksi uutta tietorakennetta, eli Set
ja 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 Set
objektille, 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ää Set
elementtejä käyttämällä values()
menetelmää ja tarkista, onko elementti sisällä Set
kä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 Sets
ja WeakSets
esiteltiin 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.