Selles õpetuses saate näidete abil õppida JavaScripti komplektide ja nõrkade komplektide kohta.
JavaScript ES6 on lisanud kaks uut andmestruktuurid ehk Set
ja WeakSet
.
Komplekt sarnaneb massiiviga, mis võimaldab meil salvestada mitut üksust, näiteks numbreid, stringe, objekte jne. Kuid erinevalt massiivist ei saa komplekt sisaldada duplikaatväärtusi.
Looge JavaScripti komplekt
A loomiseks Set
peate kasutama new Set()
konstruktorit. Näiteks,
// 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))
Kui duplikaatväärtused edastatakse Set
objektile, välistatakse duplikaatväärtused.
// Set with duplicate values const set3 = new Set((1, 1, 2, 2)); console.log(set3); // Set (1, 2)
Juurdepääs seatud elementidele
Pääsete Set
elemente kasutades values()
meetodit ja kontrollige, kas seal on element sees Set
, kasutades has()
meetodit. Näiteks,
const set1 = new Set((1, 2, 3)); // access the elements of a Set console.log(set1.values()); // Set Iterator (1, 2, 3)
Võite kasutada has()
meetodit, et kontrollida, kui element on komplektis. Näiteks,
const set1 = new Set((1, 2, 3)); // check if an element is in Set console.log(set1.has(1));
Uute elementide lisamine
add()
Meetodi abil saate komplekti elemente lisada . Näiteks,
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());
Väljund
Määra itteraator (1, 2) Määra itteraator (1, 2, 3) Määra itteraator (1, 2, 3)
Elementide eemaldamine
Võite kasutada clear()
ja delete()
eemaldamise meetod elementide komplektist.
delete()
Meetod eemaldab spetsiifilise elemendi alates Set
. Näiteks,
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()
Meetod eemaldab kõik elemendid alates Set
. Näiteks,
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 ()
Iterate komplektid
Elementide Määra kaudu saate itereerida, kasutades meetodit for … of loop või forEach (). Elementidele pääseb juurde sisestamise järjekorras. Näiteks,
const set = new Set((1, 2, 3)); // looping through Set for (let i of set) ( console.log(i); )
Väljund
1 2 3
JavaScripti nõrk komplekt
WeakSet on sarnane komplektiga. Kuid WeakSet võib sisaldada ainult objekte, samas kui komplekt võib sisaldada mis tahes tüüpi andmeid, näiteks stringe, numbreid, objekte 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))
Kui proovite lisaks objektidele lisada muid andmetüüpe, loob WeakSet tõrke. Näiteks,
// 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 meetodid
WeakSets on meetodid add()
, delete()
ja has()
. Näiteks,
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 ()
Nõrgad komplektid pole korduvad
Erinevalt komplektidest pole WeakSetid korduvad. Näiteks,
const weakSet = new WeakSet((a:1)); // looping through WeakSet for (let i of weakSet) ( // TypeError console.log(i); )
Matemaatilised komplektioperatsioonid
JavaScripti puhul ei paku Set sisseehitatud meetodeid matemaatiliste toimingute tegemiseks, nagu liit, ristmik, erinevus jne. Kuid nende toimingute tegemiseks võime luua programme.
Näide: määrake liidu toiming
// 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);
Väljund
Komplekt ("õun", "mango", "apelsin", "viinamarjad", "banaan")
Näide: määrake ristmiku operatsioon
// 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);
Väljund
Komplekt ("õun")
Näide: tehingu Erinevus määramine
// 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);
Väljund
Komplekt ("mango", "oranž")
Näide: määrake alamhulga töö
// 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);
Väljund
tõsi
JavaScripti Sets
ja need WeakSets
võeti kasutusele ES6-s . Mõni brauser ei pruugi nende kasutamist toetada. Lisateabe saamiseks külastage JavaScripti komplektide tugiteenust ja JavaScripti nõrkade komplektide tugiteenuseid.